iOS面接問題:@propertyで宣言されたNSString(またはNSArray,NSDictionary)はcopyキーワードをよく使いますが、なぜですか?strongキーワードを変更すると、どのような問題が発生しますか?

800 ワード

  • copyを使用して、入力が可変オブジェクトであっても不可オブジェクトであっても、私自身が持っているのは可変コピーです.
  • strongを使用すると、このプロパティは可変オブジェクトを指す可能性があります.この可変オブジェクトが外部で変更された場合、そのプロパティに影響します.
  •     @property (nonatomic, readwrite, strong) NSArray *myArray;
    
        NSArray *array = @[@1, @2, @3, @4];
    
        //NSMutableArray *invalidMutableArray = array; // Warning.
        //[invalidMutableArray removeAllObjects]; // Crash.
    
        NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
    
        self.myArray = mutableArray;
        [mutableArray removeAllObjects];;
        NSLog(@"%@", self.myArray); // ()
    
        [mutableArray addObjectsFromArray:array];
        self.myArray = [mutableArray copy];
        [mutableArray removeAllObjects];;
        NSLog(@"%@", self.myArray); // (1,2,3,4)
    

    その他:iOS面接問題の合集