ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² The New York Times(https://github.com/NYTimes/objective-c-style-guide/contributors)
Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°. Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ΡΠ΅ Π²Π°ΠΆΠ½Π΅Π΅. Π ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅. ΠΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠΉΡΠΈ ΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ.
ΠΠ²Π΅ ΠΏΡΠΈΡΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°:
- ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ ΠΏΡΠΈΠ²ΡΠΊ ΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ.
- Π§ΡΠΎΠ±Ρ ΠΏΠΈΡΠ°ΡΡ Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π² ΡΠΈΠ»Ρ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΡΠΈΠ½) β Π²ΠΏΡΠΎΡΠ΅ΠΌ, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠΈΡΡ ΡΡΠΆΠΎΠΉ ΠΊΠΎΠ΄.
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Apple ΠΏΠΎ ΡΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΠΌΠ΅:
- The Objective-C Programming Language
- Cocoa Fundamentals Guide
- Coding Guidelines for Cocoa
- iOS App Programming Guide
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΠΊ
- ΠΡΡΡΡΡΠΏΡ
- Π£ΡΠ»ΠΎΠ²ΠΈΡ
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
- ΠΠ΅ΡΠΎΠ΄Ρ
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
- IBOutlets
- ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
- ΠΠΈΡΠ΅ΡΠ°Π»Ρ
- CGRect ΡΡΠ½ΠΊΡΠΈΠΈ
- ΠΠΎΠ½ΡΡΠ°Π½ΡΡ
- Π’ΠΈΠΏ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅
- Private ΡΠ²ΠΎΠΉΡΡΠ²Π°
- ΠΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²
- ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ BOOL
- Π‘ΠΈΠ½Π³Π»ΡΠΎΠ½Ρ
- ΠΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° .h / .m ΡΠ°ΠΉΠ»ΠΎΠ²
- Xcode ΠΏΡΠΎΠ΅ΠΊΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
Π₯ΠΎΡΠΎΡΠΎ:
view.backgroundColor = [UIColor orangeColor];
[UIApplication sharedApplication].delegate;ΠΠ»ΠΎΡ ΠΎ:
[view setBackgroundColor:[UIColor orangeColor]];
UIApplication.sharedApplication.delegate;- ΠΠ»Ρ ΠΎΡΡΡΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°Π±Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 4 ΠΏΡΠΎΠ±Π΅Π»Π° (ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΠ²).
- Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ
ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
if/else/switch/while) Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠΎΠΊΠ΅, ΡΡΠΎ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. ΠΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. - ΠΠ΅ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΏΡΡΡΡΡ Π±Π»ΠΎΠΊΠΎΠ² Ρ ΡΠΈΠ³ΡΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ Π΄Π»Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΡΡΠΌΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.
Π₯ΠΎΡΠΎΡΠΎ:
if (user.isHappy) {
//Do something
}
else {
//Do something else
}ΠΠ»ΠΎΡ ΠΎ:
@interface Blob : DataMartsBaseItem
{
}- ΠΡΠ΅Π³Π΄Π° ΡΡΠΎΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ - ΡΡΠΎ ΠΏΡΠΈΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΠΊΠΎΡΡΠΈ ΠΊΠΎΠ΄Ρ. ΠΡΡΡΡΠΏΡ Π²Π½ΡΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ΄Π΅Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π²ΡΠ½Π΅ΡΡΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
@synthesizeΠΈ@dynamicΠ΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π½Π° Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅.- ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΏΠ°
@public,@protectedΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ (ΡΠΈΠΏΠ°@optionalΠ² ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°Ρ ) Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ³Π°ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ±Π΅Π» Π²ΠΏΡΠ°Π²ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
@interface AFKSection : NSObject {
@private
NSString *_headline;
@protected
NSInteger _count;
}Π’Π΅Π»ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°ΡΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π΄Π°ΠΆΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ (ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ) errors. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Ρ ΠΎΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° (ΡΠ°ΠΊ Π΄ΡΠΌΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ). Π Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΡΠΈΠ±ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΊΠΎΠ³Π΄Π° ΡΡΡΠΎΠΊΠ° Π²Π½ΡΡΡΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π°ΠΊΠΎΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π° ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΅Π»ΠΎΠΌ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° . Π ΡΠΎΠΌΡ ΠΆΠ΅, Π΄Π°Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ Π»ΡΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»ΡΡΡΠ΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ.
Π₯ΠΎΡΠΎΡΠΎ:
if (!error) {
return success;
}ΠΠ»ΠΎΡ ΠΎ:
if (!error)
return success;ΠΈΠ»ΠΈ
if (!error) return success;Π’Π΅ΡΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ? , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°. Π ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. ΠΠ»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ "if" ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
Π₯ΠΎΡΠΎΡΠΎ:
result = a > b ? x : y;ΠΠ»ΠΎΡ ΠΎ:
result = a > b ? x = c > d ? c : d : y;ΠΠΎΠ³Π΄Π° ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ ΠΎΡΠΈΠ±ΠΊΡ.
Π₯ΠΎΡΠΎΡΠΎ:
NSError *error;
if (![self trySomethingWithError:&error]) {
// Handle Error
}ΠΠ»ΠΎΡ ΠΎ:
NSError *error;
[self trySomethingWithError:&error];
if (error) {
// Handle Error
}ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ· API Apple Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ(Π½Π΅ NULL) Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΡΠΎΠ±Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΏΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (ΡΠΈΠΌΠ²ΠΎΠ»Ρ - ΠΈ +). Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- (void)setExampleText:(NSString *)text image:(UIImage *)image;ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎ. ΠΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΠΊΠ²Ρ, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΡΡΡΠΈΠΊΠ° Π² ΡΠΈΠΊΠ»Π΅ for().
ΠΠ²ΡΠ·Π΄ΠΎΡΠΊΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ Π²ΠΏΡΠΈΡΡΠΊ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ NSString *text Π° Π½Π΅ NSString* text ΠΈΠ»ΠΈ NSString * text, ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
ΠΠ»Ρ private ΠΈ protected ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈ/ΠΈΠ»ΠΈ Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ²) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ instance-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π° Π½Π΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ instance-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ - protected.
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ public-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΡΡΠ΅Ρ ΠΈ/ΠΈΠ»ΠΈ Π³Π΅ΡΡΠ΅Ρ. ΠΡ
Π½ΡΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ Π² .m ΡΠ°ΠΉΠ»Π΅, Π² Π±Π΅Π·ΡΠΌΡΠ½Π½ΠΎΠΉ private-ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
ΠΠ»Ρ ΠΏΡΠΎΡΡΡΡ
ΡΠΈΠΏΠΎΠ² ΠΏΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NSInteger, NSUInteger, CGFloat Π²ΠΌΠ΅ΡΡΠΎ int, float ΠΈ Ρ.Π΄.. ΠΡΠΎ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΎΠ±Π»Π΅Π³ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° 64-Π±ΠΈΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
[Apple 64-Bit Transition Guide for Cocoa Touch] (https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide/Major64-BitChanges/Major64-BitChanges.html#//apple_ref/doc/uid/TP40013501-CH2-SW8)
Π₯ΠΎΡΠΎΡΠΎ:
@interface AFKSection : NSObject {
@private
NSString *_headline;
NSUInteger _count;
}
@property (strong, nonatomic) NSString *publicHeadline;ΠΠ»ΠΎΡ ΠΎ:
@interface AFKSection: NSObject
@property (strong, nonatomic) NSString *publicHeadline;
@property (strong, nonatomic) NSString *headline;
@property (nonatomic) int count;
@end##IBOutlets
ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ IBOutlet'ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ instance-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡ Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠ΅ IBOutlet'Ρ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ "ΡΠ»Π°Π±ΡΠΌΠΈ" (weak), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ, ΠΈ Π½Π° Π½ΠΈΡ
ΡΠΆΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΈΡ
ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
strong Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΡΡΠ»Π°Π΅ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ViewController'Ρ, ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² xib'Π°Ρ
, Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π²Π²Π΅ΡΡ
Ρ ΠΈΡ
ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ).
Π₯ΠΎΡΠΎΡΠΎ:
@interface DMWidgetViewController : DMViewController {
@private
IBOutlet DMObjectPassportViewController *_objectPassportViewController;
IBOutlet DMNavigationMenuWidgetSelectViewController *_topMenuViewController;
IBOutlet DMSideMenuViewController *_sideMenuViewController;
__weak IBOutlet UIView *_containerView;
__weak IBOutlet UIView *_topBarContainerView;
__weak IBOutlet UIImageView *_contentBackgroundImageView;
}ΠΠ»ΠΎΡ ΠΎ:
@interface DMSideMenuCell : UITableViewCell
@property (nonatomic, strong) IBOutlet UIImageView* cellBg;
@property (nonatomic, strong) IBOutlet UILabel* titleLbl;
@endΠΈΠ»ΠΈ
@interface DMCarouselViewController : DMViewController {
@private
IBOutlet UIButton *changeTypeButton;
IBOutlet UILabel *dateLabel;
IBOutlet UIButton *refreshButton;
}ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Apple ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ memory management rules (NARC).
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
Π₯ΠΎΡΠΎΡΠΎ:
UIButton *settingsButton;ΠΠ»ΠΎΡ ΠΎ:
UIButton *setBut;Π’ΡΠ΅Ρ
Π±ΡΠΊΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 'AFK') Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅ΡΡ Π΄Π»Ρ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Core Data
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡΡΡ ΠΠ΅ΡΠ±Π»ΡΠΆΡΠ΅ΠΌΠ Π΅Π³ΠΈΡΡΡΠ΅, Π³Π΄Π΅ Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΡΠΊΠ²Ρ k. ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅-ΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½Ρ.
Π₯ΠΎΡΠΎΡΠΎ:
static const NSTimeInterval kNavigationFadeAnimationDuration = 0.3;ΠΠ»ΠΎΡ ΠΎ:
static const NSTimeInterval fadetime = 1.7;Π‘Π²ΠΎΠΉΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠΆΠ΅ Π² ΠΠ΅ΡΠ±Π»ΡΠΆΡΠ΅ΠΌΠ Π΅Π³ΠΈΡΡΡΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅. ΠΡΠ»ΠΈ Xcode Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΠΎΠ²Π°Π» ΠΏΠ΅ΡΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΈΡ . Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²ΡΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ, ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅. Π ΡΠ°ΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ Xcode ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
Π₯ΠΎΡΠΎΡΠΎ:
@synthesize descriptiveVariableName = _descriptiveVariableName;ΠΠ»ΠΎΡ ΠΎ:
id varnm;ΠΠ½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΡΡΡΠΏ (ΡΡΠ΅Π½ΠΈΠ΅ / Π·Π°ΠΏΠΈΡΡ) ΠΊ instance-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° (properties), Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· self.. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°Π·Ρ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ. ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (_).
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π·Π°ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ-ΡΠΎ. ΠΡΠ±ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, Π»ΠΈΠ±ΠΎ ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ β ΡΡΠ°Π·Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΠΊΠ²Ρ, ΡΠΎΡΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ.
ΠΠ»ΠΎΠΊΠΎΠ²ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΌΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ΅ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π΄Π»Ρ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ°ΡΡΠΊΠΎΠ².
ΠΠ΅ ΠΎΡΡΠ°Π²Π»ΡΠΉΡΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅: ΠΌΠ΅ΡΠΎΠ΄ dealloc, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π²Π²Π΅ΡΡ
Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (@implementation), ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ @synthesize ΠΈ @dynamic .
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΌΠ΅ΡΠΎΠ΄ init Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ dealloc ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΠΎ Π²ΡΠ΅Ρ
ΠΊΠ»Π°ΡΡΠ°Ρ
.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² init Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠΉ:
- (instancetype)init {
self = [super init]; // or call the designated initalizer
if (self) {
// Custom initialization
}
return self;
}ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (immutable objects) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² NSString, NSDictionary, NSArray, ΠΈ NSNumber. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ nil Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ-Π»ΠΈΡΠ΅ΡΠ°Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² NSArray ΠΈ NSDictionary, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
Π₯ΠΎΡΠΎΡΠΎ:
NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul"];
NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal", @"Mobile Web" : @"Bill"};
NSNumber *shouldUseLiterals = @YES;
NSNumber *buildingZIPCode = @10018;ΠΠ»ΠΎΡ ΠΎ:
NSArray *names = [NSArray arrayWithObjects:@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul", nil];
NSDictionary *productManagers = [NSDictionary dictionaryWithObjectsAndKeys: @"Kate", @"iPhone", @"Kamal", @"iPad", @"Bill", @"Mobile Web", nil];
NSNumber *shouldUseLiterals = [NSNumber numberWithBool:YES];
NSNumber *buildingZIPCode = [NSNumber numberWithInteger:10018];ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ x, y, width, ΠΈΠ»ΠΈ height ΡΡΡΡΠΊΡΡΡΡ CGRect, Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ CGGeometry.
ΠΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Apple CGGeometry:
ΠΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ CGRect Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ. ΠΠΎΡΡΠΎΠΌΡ, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΡΡΡΠΊΡΡΡΡ CGRect ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅.
Π₯ΠΎΡΠΎΡΠΎ:
CGRect frame = self.view.frame;
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);ΠΠ»ΠΎΡ ΠΎ:
CGRect frame = self.view.frame;
CGFloat x = frame.origin.x;
CGFloat y = frame.origin.y;
CGFloat width = frame.size.width;
CGFloat height = frame.size.height;ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ "ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΈΡΠ΅Π»"(magic numbers) ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ
Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠΉΡΠ΅ ΠΈΡ
ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅-ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅ΠΉ ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
ΠΠ±ΡΡΠ²Π»ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ static ΠΈ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠΉΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ #define. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ #define ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠ°Π·Π²Π°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (enum-ΠΎΠ², Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
-ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈ Ρ.Π΄.) Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ ΡΡΡΠΎΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ k.
ΠΠ»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΠ΅ΡΠ±Π»ΡΠΆΠΈΠΉΠ Π΅Π³ΠΈΡΡΡ.
ΠΠ»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ
(NSInteger) ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ NS_ENUM.
Π₯ΠΎΡΠΎΡΠΎ:
static NSString * const kCompanyName = @"The New York Times Company";
static const CGFloat kImageThumbnailHeight = 50.0;
NS_ENUM(NSInteger, TableSize) {
kTableSizeRowsCount = 10
};ΠΠ»ΠΎΡ ΠΎ:
#define CompanyName @"The New York Times Company"
#define thumbnailHeight 2ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ extern. ΠΠ°Π·Π²Π°Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°.
Π₯ΠΎΡΠΎΡΠΎ:
.h
extern NSString *const AFKSearchEngineSearchResultsScopeKey;.m
NSString *const AFKSearchEngineSearchResultsScopeKey = @"scopeKey";ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ enumΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΏΠ° ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π’Π΅ΠΏΠ΅ΡΡ SDK Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΌΠ°ΠΊΡΠΎΡ, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠΈΠΉ ΠΈ ΡΠ»ΡΡΡΠ°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΈΠΏΠΎΠ² - NS_ENUM()
Π₯ΠΎΡΠΎΡΠΎ:
typedef NS_ENUM(NSInteger, NYTAdRequestState) {
kNYTAdRequestStateInactive,
kNYTAdRequestStateLoading
};ΠΠ»ΠΎΡ ΠΎ:
typedef enum
{
en_BlobUnknown,
en_BlobImageRetina,
en_BlobImageBgRetina,
en_BlobPdf
}
enumBlobType;ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ private-ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΡΡΠ΅Ρ ΠΈΠ»ΠΈ Π³Π΅ΡΡΠ΅Ρ Π΄Π»Ρ intance-ΠΏΠ΅ΡΠΌΠ΅Π½Π½ΡΡ (Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ intance-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅).
ΠΠ±ΡΡΠ²Π»ΡΠΉΡΠ΅ private-ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² class extension (Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡ
) Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ° (.m). ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NYTPrivate ΠΈΠ»ΠΈ private) ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ².
Π₯ΠΎΡΠΎΡΠΎ:
@interface NYTAdvertisement ()
@property (nonatomic, strong) GADBannerView *googleAdView;
@property (nonatomic, strong) ADBannerView *iAdView;
@property (nonatomic, strong) UIWebView *adXWebView;
@endΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°Π·Π²Π°Π½Ρ Π² ΠΠ΅ΡΠ±Π»ΡΠΆΡΠ΅ΠΌΠ Π΅Π³ΠΈΡΡΡΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ), Π΄Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ ΡΠ²Π΅Ρ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
Π₯ΠΎΡΠΎΡΠΎ
RefreshBarButtonItem/RefreshBarButtonItem@2xandRefreshBarButtonItemSelected/RefreshBarButtonItemSelected@2xArticleNavigationBarWhite/ArticleNavigationBarWhite@2xandArticleNavigationBarBlackSelected/ArticleNavigationBarBlackSelected@2x.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΎΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΏΠ°ΠΏΠΊΠΈ.
ΠΠ΅ ΡΡΠ°Π²Π½Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Ρ nil Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ
. ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ YES, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ YES ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ (BOOL)1, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ YES ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 1 Π±Π°ΠΉΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ short ΠΈΠ»ΠΈ int), ΡΠΎ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠΏ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ±ΡΠ°Π·ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ.
Π₯ΠΎΡΠΎΡΠΎ:
if (!someObject) {
}ΠΠ»ΠΎΡ ΠΎ:
if (someObject == nil) {
}Π₯ΠΎΡΠΎΡΠΎ(Π΄Π»Ρ ΡΠΈΠΏΠ° BOOL):
if (isAwesome)
if (![someObject boolValue])ΠΠ»ΠΎΡ
ΠΎ(Π΄Π»Ρ ΡΠΈΠΏΠ° BOOL):
if ([someObject boolValue] == NO)
if (isAwesome == YES) // Never do this.ΠΡΠ»ΠΈ ΠΈΠΌΡ BOOL-ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅, ΡΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡ "is" ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ, Π½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π³Π΅ΡΡΠ΅ΡΠ°.
@property (assign, getter=isEditable) BOOL editable;Π’Π΅ΠΊΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²Π·ΡΡΡ ΠΈΠ· Cocoa Naming Guidelines.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½
#import <Foundation/Foundation.h>
@interface MySingleton : NSObject
+(instancetype) sharedInstance;
+(instancetype) alloc __attribute__((unavailable("alloc not available, call sharedInstance instead")));
-(instancetype) init __attribute__((unavailable("init not available, call sharedInstance instead")));
+(instancetype) new __attribute__((unavailable("new not available, call sharedInstance instead")));
@end
#import "MySingleton.h"
@implementation MySingleton
+(instancetype) sharedInstance {
static id shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [(MySingleton *)[super alloc] initUniqueInstance];
});
return shared;
}
-(instancetype) initUniqueInstance {
return (MySingleton *)[super init];
}
@endΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
- IBOutlets (strong, ΠΏΠΎΡΠΎΠΌ weak)
- ΠΠ±ΡΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²
- ΠΠ±ΡΠ΅ΠΊΡΡ UIKit (UIImage, UINib))
- ΠΠ±ΡΠ΅ΠΊΡΡ Foundation (NSString, NSArray)
- ΠΡΠΎΡΡΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ (NSInteger, BOOL)
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
- Π‘Π²ΠΎΠΉΡΡΠ²Π°
- IBActions
- ΠΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
- dealloc
- init-ΠΌΠ΅ΡΠΎΠ΄Ρ
- ΠΠ΅ΡΠΎΠ΄Ρ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° UIViewController'a Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ Π²ΡΠ·ΠΎΠ²Π° (viewDidLoad, viewWillAppear)
- Π‘Π΅ΡΡΠ΅ΡΡ / Π³Π΅ΡΡΠ΅ΡΡ
- IBActions
- ΠΠ΅ΡΠΎΠ΄Ρ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
- ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΡΠ°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ #pragma mark - <ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°>
Π₯ΠΎΡΠΎΡΠΎ:
- (void)dealloc {}
- (instancetype)init {}
#pragma mark - Lifecycle
- (void)viewDidLoad {}
- (void)viewWillAppear:(BOOL)animated {}
- (void)didReceiveMemoryWarning {}
#pragma mark - Custom Accessors
- (void)setCustomProperty:(id)value {}
- (id)customProperty {}
#pragma mark - IBActions
- (IBAction)submitData:(id)sender {}
#pragma mark - Protocol conformance
#pragma mark - UITextFieldDelegate
#pragma mark - UITableViewDataSource
#pragma mark - UITableViewDelegate
#pragma mark - NSCopying
- (id)copyWithZone:(NSZone *)zone {}
#pragma mark - NSObject
- (NSString *)description {}
#pragma mark - Public
- (void)publicMethod {}
#pragma mark - Private
- (void)privateMethod {}Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Xcode. ΠΡΠ±ΡΠ΅ Π³ΡΡΠΏΠΏΡ (groups) Π² Xcode-ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΏΠΊΠ°ΠΌ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ½ΠΎΡΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΠΈΠΏΡ, Π½ΠΎ ΠΈ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ΅Π³Π΄Π°, ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ "Treat Warnings as Errors" Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ (Build Settings) ΡΠ°ΡΠ³Π΅ΡΠ° ΠΈ Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ warning-ΠΎΠ². ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ warning, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Clang's pragma feature.