
ããããã£ã宣èšãããšãã«äœ¿çšãããå±æ§ã®æå³ã説æãããŠããå Žæã¯ãããããããŸãããååãšããŠããã®ãããªãœãŒã¹ã¯ãã¹ãŠãå±æ§ã®1ã€ã®ã¿ã®äœ¿çšã説æããããä»ã®ããã¥ã¡ã³ããžã®ãªã³ã¯ã®æãå«ãã§ããããã®åŸãåŒæ°ã®è¿œè·¡ã倱ããŸãã ãã¡ãããããªãã¯æåŠã®å±±ãèªãå¿ èŠããããã¹ãŠã®åŸ®åŠããåŠã¶ããã«åªåããå¿ èŠããããŸãã ããããåå¿è ã«ãšã£ãŠã¯ãåºæ¬ãç解ããã ãã§ååã§ãã 以äžã§ã¯ãããããã£ã®å®£èšã«äœ¿çšãããäž»ãªå±æ§ããã®å€ãããã³1ã€ãŸãã¯å¥ã®å±æ§å€ã䜿çšãã䟡å€ãããäž»ãªã±ãŒã¹ã«ã€ããŠãã§ããã ãç°¡åã«èª¬æããããšããŸããã
ç°¡åãªçŽ¹ä»
setterã¡ãœãããšgetterã¡ãœããã䜿çšããŠãªããžã§ã¯ãæåèšèªã®ãªããžã§ã¯ãã®ããŒã¿ã«ã¢ã¯ã»ã¹ããããšããå§ãããŸãïŒãããã¯ãã¥ãŒããŒã¿ãŒãšã¢ã¯ã»ãµãŒã§ããããŸãïŒãåè ã¯ããããã£å€ãèšå®ããåŸè ã¯ã€ã³ã¹ã¿ã³ã¹å€æ°ã«çŽæ¥ã¢ã¯ã»ã¹ãã代ããã«ãçŸæç¹ã§ããããã£å€ãè¿ããŸãã ã¡ãœããã®æã宣èšããå¿ èŠæ§ãåãé€ãããã«ãå¿ èŠãªæžã蟌ã¿ã®éãæžããããããã£ãçºæãããŸããããæ¬è³ªã¯å€æŽããŸããã§ããïŒããããã£ã«ã¢ã¯ã»ã¹ãããšããã»ãã¿ãŒãŸãã¯ã²ãã¿ãŒãèªåçã«çæã§ããæäœã«å¿ããŠåŒã³åºãããŸãã åºæ¬çã«ãããããã£ã®å®£èšæã«æå®ãããå±æ§ã«ãã£ãŠãããŒã¿ã¢ã¯ã»ã¹ã¡ãœããã®çææ¹æ³ã決ãŸããŸãã
çŽæ¥ãæå°
ãŸããããããã£ãæã€ãã¹ãŠã®å±æ§ãã°ã«ãŒãã«åããŸãã
- ã¢ã¯ã»ã·ããªãã£å±æ§ïŒèªã¿åãå°çš/èªã¿åã/æžã蟌ã¿ïŒã
- æææš©å±æ§ïŒä¿æ/匷å/ã³ããŒ/å²ãåœãŠ/ unsafe_unretained /匱ïŒã
- ååæ§å±æ§ïŒåå/éååïŒã
- nullabilityå±æ§ïŒnull_unspecified / null_resettable / nullable / nonnullïŒ-xcode 6.3ã§ç»å Ž
ã»ãã¿ãŒãšã²ãã¿ãŒã®ååãèšå®ã§ããå±æ§ã¯èæ ®ããŸããã䜿çšããŠããã³ãŒãã¹ã¿ã€ã«ãæäŸãããã®ãé€ããŠããã®ãããªã«ãŒã«ã¯ãããŸããã æ瀺çãŸãã¯æé»çã«ããã¹ãŠã®ã¿ã€ãã®å±æ§ãåããããã£ã«æå®ãããŸãã
å¯çšæ§å±æ§
- readwrite-ããããã£ãèªã¿åããšæžã蟌ã¿ã«äœ¿çšã§ããããšã瀺ããŸããã€ãŸããsetterãšgetterã®äž¡æ¹ãçæãããŸãã ç¹ã«æå®ããªãéãããã®å€ã¯ããã©ã«ãã§ãã¹ãŠã®ããããã£ã«èšå®ãããŸãã
- readonly-ããããã£ãèªã¿åãå°çšã§ããããšã瀺ããŸãã ãã®å€ã¯ããªããžã§ã¯ãã®ã¿ã¹ã¯å®è¡äžã«ããããã£ããå€åŽãã«å€æŽããããšãæãŸãããªãå ŽåããŸãã¯ããããã£å€ãå€æ°ã«ä¿åããããä»ã®ããããã£ã®å€ã«åºã¥ããŠçæãããå Žåã«äœ¿çšããå¿ èŠããããŸãã ããšãã°ãUserãªããžã§ã¯ãã«ã¯firstNameããããã£ãšlastNameããããã£ãããã䟿å®äžãfullNameããããã£ã®èªã¿åãå°çšãèšå®ããããã®å€ã¯æåã®2ã€ã®ããããã£ã®å€ã«åºã¥ããŠçæãããŸãã
ããããã£ããå€éšãã«å€æŽããã®ãæãŸãããªãå Žåãéåžžãã¯ã©ã¹ã€ã³ã¿ãŒãã§ã€ã¹ã§èªã¿åãå°çšãšããŠå®£èšãããã¯ã©ã¹æ¡åŒµã§readwriteãšããŠåå®çŸ©ãããŸãããã®ãããã¯ã©ã¹å ã§ã¯ãå€æ°ã§ã¯ãªãã»ãã¿ãŒãä»ããŠå€ãå€æŽããããšãã§ããŸãã
æææš©ã®å±æ§
ããã¯ãäž»ã«æåãšèªåã®ã¡ã¢ãªç®¡çãå ±åããŠãããããæãåºç¯ãªã¿ã€ãã®å±æ§ã§ãã
ARCãæå¹ãªå Žåãããããã£ãªã©ã®å€æ°ã«ã¯æææš©å±æ§ããããŸãããã®å Žåã®ã¿ãå€ã®ã»ãããããããã£ãããå°ãããªããŸãã__strong / __ weak / __ unsafe_unretainedãããã¯ãARCã®å¯Ÿè±¡ãšãªãããŒã¿ã¿ã€ãïŒã¿ã€ãã®æ©èœåçŽãªããŒãã·ãŒããšãªãããšãæå³ãããã®ãè€éã«ããªãããã«ãARCã®å¯Ÿè±¡ã§ã¯ãªãããŒã¿ã¯èæ ®ããŸããã ãããã£ãŠãããããã£ã®ãã®å±æ§ã®å€ã説æãããšããARCãæå¹ã«ãªã£ãŠãããšãã«å¯Ÿå¿ããã€ã³ã¹ã¿ã³ã¹å€æ°ãæææš©å±æ§ã®å€ãæã£ãŠããããšã瀺ããŸãïŒå€æ°ãèªåçã«äœæãããå Žåããã®å±æ§ã®ç®çã®å€ã§ããã«äœæãããŸããå€æ°ãèªåã§å®çŸ©ããå Žåã¯ãæåã§èšå®ããå¿ èŠããããŸãïŒæ£ããææè å±æ§å€ïŒã
- retainïŒå¯Ÿå¿ããå€æ°ã¯__strongå±æ§ãæã€å¿ èŠããããŸãïŒ-ãã®å€ã¯ãçæãããã»ãã¿ãŒã§å²ãåœãŠããããªããžã§ã¯ãã®åç §ã«ãŠã³ããå¢å ãã以åã«åç §ããããªããžã§ã¯ãã®åç §ã«ãŠã³ã¿ãŒãæžå°ããããšã瀺ããŸãã ãã®å€ã¯ãä»ã®å€ãé©åã§ãªããã¹ãŠã®å Žåã«ããã¹ãŠã®Objective-Cã¯ã©ã¹ã§ARCãç¡å¹ã«ãªã£ãŠããå Žåã«é©çšãããŸãã ãã®å€ã¯ãARCããŸã 䜿çšãããŠããªãæ代ããä¿æãããŠãããARCã¯ãã®äœ¿çšãçŠæ¢ããŠããŸããããèªåãªã³ã¯ã«ãŠã³ãã®ä»£ããã«åŒ·åã䜿çšããããšããå§ãããŸãã
// // ARC -(void)setFoo(Foo *)foo { if (_foo != foo) { Foo *oldValue = _foo; // ivar _foo = [foo retain]; // , [oldValue release]; } }
- strongïŒå¯Ÿå¿ããå€æ°ã¯__strongå±æ§ãæã€å¿ èŠããããŸãïŒ-ãã®å€ã¯retainã«äŒŒãŠããŸãããèªåãªã³ã¯ã«ãŠã³ããæå¹ãªå Žåã«ã®ã¿é©çšãããŸãã ARCã䜿çšããå Žåããã®å€ã¯ããã©ã«ãã§äœ¿çšãããŸãã 匱ãã³ããŒããã®ã«é©ããªããã¹ãŠã®å Žåã«åŒ·ãã䜿çšãããã¹ãŠãããŸããããŸãã
- ã³ããŒïŒå¯Ÿå¿ããå€æ°ã¯__strongå±æ§ãæã€å¿ èŠããããŸãïŒ-çæãããã»ãã¿ãŒã®æææš©å±æ§ã®ãã®å€ã«ããã察å¿ããã€ã³ã¹ã¿ã³ã¹å€æ°ã«ã¯ãå²ãåœãŠããããªããžã§ã¯ãã«éä¿¡ãããã³ããŒã¡ãã»ãŒãžã«ãã£ãŠè¿ãããå€ãå²ãåœãŠãããŸãã æææš©å±æ§ã®ãã®å€ã䜿çšãããšããªããžã§ã¯ãã®ã¯ã©ã¹ã«ããã€ãã®å¶éã課ããããŸãã
- ã¯ã©ã¹ã¯NSCopyingãããã³ã«ããµããŒãããå¿ èŠããããŸãã
- ã¯ã©ã¹ã¯å¯å€ã§ãã£ãŠã¯ãªããŸããã NSString-NSMutableStringãªã©ãäžéšã®ã¯ã©ã¹ã«ã¯å¯å€ãµãã¯ã©ã¹ããããŸãã ããããã£ããå¯å€ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ããå Žåãcopyã¡ãœããã¯ãã®ãéå¯å€ãçžå¯Ÿã®ã€ã³ã¹ã¿ã³ã¹ãè¿ããããã³ããŒã䜿çšãããšæãŸãããªãçµæãçããŸãã ããšãã°ãNSMutableStringã®ã€ã³ã¹ã¿ã³ã¹ã§copyãåŒã³åºããšãNSStringã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
äŸïŒ
@property (copy, nonatomic) NSMutableString *foo; ... // - (void)setFoo:(NSMutableString)foo { _foo = [foo copy]; // copy NSMutableString NSString, , , , , }
2çªç®ã®å¶éã¯ãã³ããŒå€ã䜿çšããäž»ãªçç±ã瀺ããŠããŸãããå¯å€ããµãã¯ã©ã¹ãæã€ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã§ãããã¹ãŠã®ãããªãã¯ããããã£ã¯ããã®æææš©å±æ§å€ã§æé©ã«äœæãããŸãã ãã¥ãŒã¿ãã«ã§ãªãã¯ã©ã¹ã®å Žåãcopyã¡ãœããã¯retainãšããŠæ©èœããŸããã³ããŒã¯è¡ããããäœåãªã¡ã¢ãªãšæéã¯æ¶è²»ãããŸããããããããã£ã¯å¯å€ãµãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã®æå®ããä¿è·ãããŸãã ããšãã°ãNSMutableArrayã¯ã©ã¹ã®ãªããžã§ã¯ããNSArrayåã®ããããã£ã«èšå®ããããšã¯äžå¯èœã§ãããããã»ãã¿ãŒããã€ãã¹ããŠããããã£ããå€éšãã«å€æŽããããšã¯ã§ããŸããã
äŸïŒ
@interface Foo : NSObject ⊠@property (copy, nonatomic) NSArray *bar; @property (strong, nonatomic) NSArray *barNotProtected; ⊠@end ⊠NSMutableArray *mutableArray = [@[@1, @2, @3] mutableCopy]; Foo *foo = [Foo new]; foo.bar = mutableArray; // bar foo.barNotProtected = mutableArray; // barNotProtected [mutableArray removeObjectAtIndex:0]; // foo.barNotProtected (@[@2, @3]), , foo.bar (@[@1, @2, @3]).
- weakïŒå¯Ÿå¿ããå€æ°ã¯__weakå±æ§ãæã€å¿ èŠããããŸãïŒ-ãã®å€ã¯assignããã³unsafe_unretainedã«äŒŒãŠããŸãã éãã¯ãç¹å¥ãªã¹ããªãŒãããžãã¯ã«ãããæææš©å±æ§ã®ãã®å€ãæã€å€æ°ã¯ãå€æ°ãæããªããžã§ã¯ããç Žæ£ããããšãã«å€ãnilã«å€æŽã§ããããšã§ããããã¯ãã¢ããªã±ãŒã·ã§ã³ã®å®å®æ§ã«åœ±é¿ããŸãïŒãåãã®ããã«ãnilã¯ã¡ãã»ãŒãžã«å¿çãããããããã¯æ¢ã«åé€ããããªããžã§ã¯ãã«ã¢ã¯ã»ã¹ãããšãã«EXC_BAD_ACCESSããªãããšãæå³ããŸãïŒã æææš©å±æ§ã®ãã®å€ã¯ãARCãæå¹ã«ããŠãªããžã§ã¯ãããªã²ãŒããªã©ãžã®ãã€ã³ã¿ãæ ŒçŽããããããã£ã®ä¿æãµã€ã¯ã«ãé€å€ãããšãã«äœ¿çšããå¿ èŠããããŸãã ããã¯ãARCãç¡å¹ã«ãªã£ãŠãããšãïŒããã³ããŒãžã§ã³5.0ããåã®iOSã§ARCãæå¹ã«ãªã£ãŠãããšãïŒã«ãµããŒããããªãæææš©å±æ§ã®å¯äžã®å€ã§ãã
- unsafe_unretainedïŒå¯Ÿå¿ããå€æ°ã¯__unsafe_unretainedå±æ§ã䜿çšããå¿ èŠããããŸãïŒ-ãã®ã¿ã€ãã®æææš©ãæã€ããããã£ã¯ãå²ãåœãŠããããªããžã§ã¯ãã®ã¢ãã¬ã¹ãä¿åããã ãã§ãã ãã®ããããã£ãžã®ã¢ã¯ã»ã¹æ¹æ³ã¯ããªããžã§ã¯ãã®åç §ã«ãŠã³ãã«åœ±é¿ããŸããã åé€ããããšãã§ãããã®ããããã£ã«ã¢ã¯ã»ã¹ãããšã¯ã©ãã·ã¥ããŸãïŒãããã£ãŠå®å šã§ã¯ãããŸããïŒã ARCãç»å Žãããšãããã®å€ã¯weakã®ä»£ããã«äœ¿çšãããŸããããiOS 4.3ããµããŒãããå¿ èŠããããŸããã çŸåšããã®äœ¿çšã¯äœæ¥ã®é床ã«ãã£ãŠã®ã¿æ£åœåãããŸãïŒãã¡ãããçŸåšã®ããã©ãŒãã³ã¹ã§ã¯èçŒã§ã¯ããã«æ°ä»ããªãã§ããããã匱ãç¹æ§ã®éæ³ã«ã¯ããªãã®æéãå¿ èŠã§ãããšãã蚌æ ããããŸãïŒããããã£ãŠãç¹ã«æåã¯äœ¿çšããªãã§ãã ããã
- assignïŒå¯Ÿå¿ããå€æ°ã¯__unsafe_unretainedå±æ§ã䜿çšããå¿ èŠããããŸããã匷ãå±æ§ãŸãã¯åŒ±ãå±æ§ã䜿çšããæ¹ãé©åãªARCã¿ã€ãã®ã¿ãæææš©å±æ§ãæã£ãŠããããããã®å€ã¯äžèŠã§ãïŒ-åã«ã¢ãã¬ã¹ãå²ãåœãŠãŸãã ARCããªãå Žåãæææš©å±æ§ã®ããã©ã«ãå€ã ARCã®å¯Ÿè±¡ãšãªããªãã¿ã€ãã®ããããã£ã«é©çšããå¿ èŠããããŸãïŒãããã«ã¯ãããªããã£ãã¿ã€ãããã³ããããéãªããžã§ã¯ãã¿ã€ãïŒCFTypeRefãªã©ïŒãå«ãŸããŸãïŒã ARCããªãå Žåããªããžã§ã¯ãããªã²ãŒããªã©ãžã®ãã€ã³ã¿ãä¿æããããããã£ã®ä¿æãµã€ã¯ã«ãé€å€ããããã«ãweakã®ä»£ããã«äœ¿çšãããŸãã
ååå±æ§
- atomicã¯ããã®å±æ§ã®ããã©ã«ãå€ã§ãã ã¢ã¯ã»ãµãšãã¥ãŒããŒã¿ã¯ãç°ãªãã¹ã¬ããããåæã«ã¢ã¯ã»ã¹ããããšãã«åæã«å®è¡ãããªãããã«çæãããããšãæå³ããŸãïŒã€ãŸããæåã®1ã€ã®ã¹ã¬ããããžã§ããå®è¡ããŸã-å€ãååŸãŸãã¯ååŸãããã®å¥ã®ã¹ã¬ããã®åŸã«ã®ã¿åãããšãã§ããããã«ãªããŸãïŒã å®è£ ã®ç¹æ§ã«ããããã®ãããªååæ§å±æ§å€ãæã€ããããã£ã¯ãã¢ã¯ã»ã¹ã¡ãœããã®1ã€ã®ã¿ããªãŒããŒã©ã€ãã§ããŸããïŒããããåå®çŸ©ããå Žåãäž¡æ¹ãåå®çŸ©ããç°ãªãã¹ã¬ããã§ã®åæå®è¡ã«å¯Ÿããä¿è·ãšæ··åãããŸãïŒã ããããã£ã®ååæ§ãšãªããžã§ã¯ãã®ã¹ã¬ããã»ãŒããæ··åããªãã§ãã ããã ããšãã°ãããã¹ã¬ããã§ãªããžã§ã¯ãã®ããããã£ããååãšå§ã®å€ãååŸããå¥ã®ã¹ã¬ããã§åãå€ãå€æŽãããšãååã®å€ãå€ããªããå§ããã§ã«å€æŽãããŠããå¯èœæ§ããããŸãã ãããã£ãŠãå€ãã®ã¹ã¬ããããåæã«ã¢ã¯ã»ã¹ã§ãããªããžã§ã¯ãã®ããããã£ã«äœ¿çšããå¿ èŠããããç¡å¹ãªå€ãåä¿¡ããªãããã«ããå¿ èŠããããŸãããå¿ èŠã«å¿ããŠãå®å šãªã¹ã¬ããã®å®å šæ§ã確ä¿ããŠãã ãããããã ãã§ã¯ååã§ã¯ãããŸããã ãšãããããã®ãããªããããã£ã®ã¢ã¯ã»ã¹æ¹æ³ã¯ãååã®èŠæš¡ãããäºçŽ°ãªéååãããé ãåäœããããšãèŠããŠãã䟡å€ããããŸãããããã§ãããããŒã¯ã«ãŒãã«ãç¯çŽããã®ã§ãå¿ èŠã§ãªãå Žåã¯ãéååã䜿çšããæ¹ãè¯ãã§ãã
- éã¢ãããã¯-ã¢ãããã¯ã®å察-ãã®ã¢ãããã¯å±æ§å€ãæã€ããããã£ã®å Žåãã¢ã¯ã»ã¹ã¡ãœããã¯ç°ãªãã¹ã¬ããã§ã®åæå®è¡ã«å¯Ÿããä¿è·ã®è² æ ãåããªããããé«éã§ãã ã»ãšãã©ã®ãªããžã§ã¯ãã¯1ã€ã®ã¹ã¬ããã§ã®ã¿äœ¿çšãããããããã®å€ã¯ã»ãšãã©ã®ããããã£ã«é©ããŠããŸããè¿œå ã®æ©èœã§ãéã¿ä»ããããæå³ã¯ãããŸããã äžè¬ã«ããªãã¢ãããã¯ã§ããå¿ èŠããããã説æã§ããªããã¹ãŠã®ããããã£ã«ã€ããŠãéã¢ãããã¯ã䜿çšãããšãé«éã§ç°¡åã§ã¹ããŒãã«ãªããããçš®ã®äŒæ¥ã«ãªããŸãã
ãã«å±æ§
ãã®å±æ§ã¯ãçæãããã¢ã¯ã»ã¹æ¹æ³ã«ã¯åœ±é¿ããŸããã ç¹å®ã®ããããã£ãnilãŸãã¯NULLã«ãªãå¯èœæ§ããããã©ããã瀺ãããšãç®çãšããŠããŸãã Xcodeã¯ãã¯ã©ã¹ã§Swiftã³ãŒããæäœãããšãã«ãã®æ å ±ã䜿çšããŸãã ããã«ããã®å€ã¯ãã³ãŒãã宣èšãããåäœã«åããäœããããå Žåã«èŠåã衚瀺ããããã«äœ¿çšãããŸãã ããšãã°ãnullãšããŠå®£èšãããŠããããããã£ã«nilãèšå®ããããšããŠããå Žåã ãããŠæãéèŠãªããšã¯ããã®æ å ±ã¯ããªãã®ã³ãŒããèªã人ã«ãšã£ãŠæçšã§ããããšã§ãã ãã®å±æ§ã®äœ¿çšã«ã¯ãããã€ãã®å¶éããããŸãã
- ããªããã£ãåã«ã¯äœ¿çšã§ããŸããïŒãããã®å Žåãnilå€ãšNULLå€ãåãå ¥ããªããããå¿ èŠãããŸããïŒ
- ãã«ãã¬ãã«ãã€ã³ã¿ãŒã«ã¯äœ¿çšã§ããŸããïŒäŸïŒid *ãŸãã¯NSError **ïŒ
- null_unspecified-ããã©ã«ãã§äœ¿çšãããããããã£ãnil / NULLã«ã§ãããã©ããã«ã€ããŠã¯äœãèšããŸããã ãã®å±æ§ãçŸããåã¯ãããããŸãã«ãã¹ãŠã®ããããã£ãå®å šã«èªèããæ¹æ³ã§ãã ããã¯ããããŒã®å 容ã®ç¹ã§æªãããããã®å€ã䜿çšããããšã¯ãå§ãããŸããã
- null_resettable-ãã®å€ã¯ããã®å€ãèšå®ãããšãå®éã«ã¯ããããã£ã«ããã©ã«ããå²ãåœãŠãããããããã®ãããªããããã£ã®ã²ãã¿ãŒãnil / NULLãè¿ããªãããšã瀺ããŸãã ãŸããçæãããã¢ã¯ã»ã¹æ¹æ³ã¯ãã®å±æ§ã®å€ã«äŸåããªããããnil / NULLãåãåã£ããšãã«ivarã®ããã©ã«ãå€ãç¶æããããã«ã»ãã¿ãŒãåå®çŸ©ããããããã©ã«ãå€ãè¿ãããã«getterãåå®çŸ©ããå¿ èŠããããŸã察å¿ããivar == nil / NULLã®å Žåã ãããã£ãŠãããããã£ã«ããã©ã«ãå€ãããå Žåã¯ãnull_resettableãšããŠå®£èšããŸãã
- nonnull-ãã®å€ã¯ããã®å±æ§ã§ããŒã¯ãããããããã£ãnil / NULLã§ã¯ãªãããšã瀺ããŸãã å®éãããšãã°ããã®ããããã£ã®å€ãnilããååŸããããšããŠããXcodeãããã«ããŸãåŸããªããããnilãååŸã§ããŸãã ããããããã¯ãã§ã«ããªãã®ééãã§ãããXcodeã¯èŠåã§ããªãã®æåã®ç¯å²ã§ãããæã瀺ããŸãã ãã®ããããã£ã®å€ã決ããŠnil / NULLã«ãªããªãããšã確å®ã§ãIDEã§ããã远跡ã§ããããã«ããå Žåã¯ã䜿çšãã䟡å€ããããŸãã
- nullable-ãã®å€ã¯ãããããã£ãnil / NULLã§ããããšã瀺ããŸãã null_unspecifiedã®ããã«ãäœãããå¿ èŠã¯ãããŸããããããã§ãã確å®æ§ãé«ããããããã2ã€ã®éã§nullableã䜿çšããæ¹ãæ£ããã§ãã ãããã£ãŠãnull_resettableãnonnullãé©åã§ãªãå Žåã¯ãnullableã䜿çšããŠãã ããã
䟿å®äžãç¹å®ã®ã³ãŒããããã¯ã®ããã©ã«ãå€ãnull_unspecifiedããnonnullã«å€æŽã§ããŸãã ãããè¡ãã«ã¯ããã®ãããªãããã¯ã®åã«NS_ASSUME_NONNULL_BEGINã眮ãããã®åŸã«NS_ASSUME_NONNULL_ENDã眮ããŸãã
// @property (copy, nonatomic, nonnull) NSString *foo; @property (copy, nonatomic, nonnull) NSString *str; @property (strong, nonatomic, nullable) NSNumber *bar; @property (copy, nonatomic, null_resettable) NSString *baz; // NS_ASSUME_NONNULL_BEGIN @property (copy, nonatomic) NSString *foo; @property (copy, nonatomic) NSString *str; @property (strong, nonatomic, nullable) NSNumber *bar; @property (copy, nonatomic, null_resettable) NSString *baz; NS_ASSUME_NONNULL_END
ããã§ãç§ã¯ç©èªãçµããããããšæ¥ãã§ããŸãã 誰ãäœãè¿œå ãããè°è«ãããããããšããããŸã-ã³ã¡ã³ããæè¿ããŸãã
æŽæ°ïŒstorojã®ãããã§ãretainã«é¢ããé ç®ã®ã»ãã¿ãŒã®äŸãä¿®æ£ãããatomicã«é¢ããé ç®ããããã«æŽç·ŽãããŸããã ã³ã¡ã³ããããããšãã
Upd2ïŒfsmorygoã®èª¬åŸåã®ãããã§ã nullabilityå±æ§ã®ã»ã¯ã·ã§ã³ãè¿œå ãããŸãã