PDA

View Full Version : افتتاح انجمن برنامه نویسی برای xcode آیفون



reza1615
چهارشنبه 26 آبان 1389, 15:53 عصر
سلام
داشتم در وب جستجو میکردم با این انجمن برخورد کردم
انجمن برنامه نویسی xcode برای آیفون و آیپد در محیط xcode به نظرم جالب آمد
آدرس انجمن
www.x-code.ir

prpe26
شنبه 09 مهر 1390, 17:45 عصر
مدیر این انجمن جناب محمد کمیلی یکی از بزرگترین برنامه نویسان آیفون حتی در سطح جهانی هستن

من هم اونجا با نام prp-e فعالیت میکنم.

توصیه میکنم اصلا از دستش ندید ;)

deopen
یک شنبه 13 آذر 1390, 17:25 عصر
ولی من که برای اولین فعالیتم در این انجمن هیچ گونه امیدی برای ادامه پیدا نکردم ، پست زیر را به آدرس :
http://www.x-code.ir/forum/showthread.php?t=290

بعنوان جواب ارسال کردم و جوابم یک ماهه که هنوز تایید نشده و فک نمیکنم هم اشکالی داشته باشه ، این جوابی بود که ارسال کردم :


توضیحات کامل در صفحه ی ۲۳۵ کتاب آبجکتیو سی از استفان کوخان .

برای تکمیل توضیحاتتون در رابطه با پروتوکولها ، نوعی پروتوکول به نام پروتوکول informal وجود دارد ،
این پروتوکولها بیشتر زمانی استفاده مشد که دستور @optional به آبجکتیو سی اضافه نشده بود .

به تور نحوی یعنی از لحاظ syntax اینها category هایی هستند بدون implementation ، این پروتوکولها به نام پروتوکولهای انتضاعی یا abstract protocols هم شناخته میشوند .

این پروتوکولها بیشتر برای کلاس NSObject بکار میروند .

یک از این نوع پروتوکولها ، در سرفایل NSScriptWhoseTests.h موجود هست .

برای دیدن این پروتوکول دکمه ی command رو نگه دارید و روی Foundation/Foundation.h کلیک کنید ، سپس باز هم با فشرده نگه داشتن command روی Foundation/NSScriptWhoseTests.h کلیک کنید و پروتوکول انتضاعی یا اینفورمال NSComparisonMethods را مشاهده کنید :



@interface NSObject (NSComparisonMethods)
- (BOOL)isEqualTo:(id)object;
// Implemented using isEqual:. Returns NO if receiver is nil.
- (BOOL)isLessThanOrEqualTo:(id)object;
// Implemented using compare. Returns NO if receiver is nil.
- (BOOL)isLessThan:(id)object;
// Implemented using compare. Returns NO if receiver is nil.
- (BOOL)isGreaterThanOrEqualTo:(id)object;
// Implemented using compare. Returns NO if receiver is nil.
- (BOOL)isGreaterThan:(id)object;
// Implemented using compare. Returns NO if receiver is nil.
- (BOOL)isNotEqualTo:(id)object;
// Implemented using compare. Returns NO if receiver is nil.
- (BOOL)doesContain:(id)object;
// Returns nil if receiver is not an NSArray or if array doesn't contain object.
// This operator is not working against the database.
- (BOOL)isLike:(NSString *)object;
// argument should be a string using simple shell wildcards (* and ?).
// (e.g. "Stev*" or "N?XT").
// Returns NO if receiver is not an NSString.
- (BOOL)isCaseInsensitiveLike:(NSString *)object;
@end


به نظر من استفاده از نوع پروتوکول لازم نیست و خوب هم نیست ، اما این چیزهایی که گفتم این مفهوم رو بهتر میرسونه ، که پروتوکول ، کاری جز لیست کردن متدها انجام نمیده و classless هست ، در واقع یک اکستنژن بدون implementation میباشد .

نکته ی دوم در این بحث که از قلم افتاده شد ، استفاده از conformsToProtocol برای دریافتن این مضوع که آیا آبجکت مورد نظر از پروتوکول خاصی پیروی میکنه یا نه ، میباشد .

این متد خیلی به exception handling کمک میکنه ، فرض کنید ، شی گرافیکی داریم که از پروتوکول drawing باید پیروی کنه ، و شی از نوع id باشه ، ما ۲ راه داریم یکی اینکه چندین مرتبه ، با استفاده از respondsToSelector چک کنیم که به متدهایی مثل paint یا erase جواب میده یا نه یا اینکه به یک تکه کد ساده :


if ([currentObject conformsToProtocol: @protocol (Drawing)] == YES) {
// Send currentObject paint, erase and/or outline msgs
... }

نکته ای که در کد بالا وجود داره اینه که دستور @protocol در بالا یک آبجکت از نوع پروتوکول همونجور که متد لازم داره ارسال میکنه ، کمی متفاوت ، اما مشابه با تولید آبجکت class برای متدهایی مثل isKindOfClass میباشد .

میتونید متد بالا را با تست کردن اینکه آیا هر آبجکت از NSCopying پیروی میکنه یا نه امتحان کنید .

نکته ی بعد این که عادت کنیم ، اگر آبجکت ما باید از پروتوکول خاصی استفاده کنه ، از الگوی زیر برای تعریف اون استفاده کنیم ، مخصوصا اگه id باشه :


id <Drawing> currentObject;

در اون زمان اگه مشکلی پیش بیاد ، کامپایلر آلرت میده :

warning: class ‘Square’ does not implement the ‘Drawing’ protocol

خوب ، اگه id نباشه ، نیازی نیست ، اما یادمون باشه که کامپایلر نمیدونه چی باید تو id قرار بگیره ، و همه هم میدونیم که runtime چه مصیبتی ممکنه درست کنه ، کلا همیشه باید هوای این id ها رو داشته باشید ، خطرناکن ;)

hankicls13
دوشنبه 28 مرداد 1392, 06:52 صبح
Every once in awhile it might be important to get rid off the blade to be certain that there is nothing at all preventing it from operating suitably Their C71 model runs off of gasoline and it is a compact,If you will find canine grooming shears (http://bbs.ga.sdo.com/),Cheap Kate Spade Bags (http://www.luvipol.co.uk/katespade/kate-spade-shoulder-bags.html),B (4530) (http://www.spiritlakeconsulting.com/tribal/viewtopic.php?f=14&t=47240), expenses successful observed that may minimize both of those asphalt and concrete He will fatten up the price therefore you can be sad for buying from him Most puppy groomers have a preference for this gadget especially in giving proper cleanliness mainly because it gets rid of bestial fur and dandruff It includes a designed in h2o pump for damp cutting,Mulberry Bayswater (http://www.luvipol.co.uk/mulberry/mulberry-women-s-bags/mulberry-bayswater-bag.html), simple winding deal with head adjuster and sturdy and trustworthy stay-level blade guard Other clippers around the advertise are classified as the balding clippers as well as the name speaks for by itself Learning the purpose of each and every variety of canine grooming clippers also makes it a lot easier for you personally to pick out the most beneficial pet grooming materials that can be completely in shape and ideal to your beloved animals