2012-04-18 8 views
0

@property (nonatomic, strong) NSMutableArray *authorMutableArray;NSMutableArrayのは

- (id)init { 
    self = [super init]; 
    if (self) { 

     self.authorMutableArray = [[NSMutableArray alloc] initWithObjects:@"First Row", @"Second Row", nil]; 

     for (NSString *string in authorMutableArray) { 
      NSLog(@"String: %@", string); 
     } 

     NSLog(@"Init in Add Model with Author count:%i", [authorMutableArray count]); 


    } 
} 

(コードで)プロパティにアクセスする例を空にする。 NSLogは常に0としてカウントを表示します。

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section == 0) { 
     if (indexPath.row == [self.addModel.authorMutableArray count] - 1) { 
      NSLog(@"count of %i", [self.addModel.authorMutableArray count]); 
      return UITableViewCellEditingStyleInsert; 
     } 

     else { 
      return UITableViewCellEditingStyleDelete; 

     } 
    } 

    else { 
     return UITableViewCellEditingStyleNone; 
    } 
} 

私がinitで作成している配列は、このメソッドを超えて値を保持していません。理由は何ですか? forループは配列内の両方のオブジェクトを表示します。 initメソッドが呼び出された後でこれを尋ねようとすると、配列は空です。

更新日時:皆さんありがとうございます。私はinitメソッドで自分自身を返すことを忘れていました。あなたのクラスのインターフェイスファイル(.hファイル)で

+0

authormutablearrayプロパティの宣言方法 –

+0

通常の合成プロパティです。 –

+0

@WDysonウォーレンは何を意味していますか、どの指定者を使用していますか? '強い'、 '弱い'、 '割り当てる'?また、後でどのようにアレイにアクセスしていますか?そのコードを私たちに見せてもらえますか? –

答えて

5

は、initメソッドの戻り値の自己べきではないのですか?

+0

あなたはそうです、私はこれを修正しました。かなり愚かな気分。 –

+1

問題を解決しましたか? –

+0

はい、そうでした。私は同じinitメソッドで作成していた4つのNSStringプロパティを持っていますが、この例では除外しています。彼らはすべてうまくいった。データを保持しない唯一のアレイはなぜアレイですか? –

0

は次のように宣言します。

@interface Your_Class_Name : UIViewController { 
    NSMutableArray *authorMutableArray; 

} 

@property (nonatomic, strong) NSMutableArray *authorMutableArray; 
//i dont know why you prefered strong, chose retain and try again please 
+3

'strong'はARCの下で' retain'と同じです。彼らはそれぞれのメモリ管理システムで同等のセマンティクスを持っています。 ivarを個別に宣言する必要もありません。それは '@ synthesize'によって作成されます。 –

+0

@ lulius、あなたは配列に使用しますか?強いか保持しますか? –

+0

'copy'は実際には変更可能なクラスを持つクラスですが、' strong'と 'retain'の間の選択は単純にARCを使用しているかどうかによって異なります。 –

0

ここではC++またはJavaを扱っていませんが、-initオブジェクトのメソッドMUSTは値を返します。

このクォークは実際にかなり面白いもの、e.xを許しています。次

-(id) init { 
    NSLog(@"Creating new instance of singleton object..."); 

    #if __has_feature(objc-arc) 
    self = singleton_instance; 
    #else 
    [self release]; 
    self = [singleton_instance retain]; 
    #endif 

    return self; 
} 

また、特定のクラスのオブジェクトが初期化されるときに(つまり、この回答のためのトピックの深すぎる)を正確に追跡することができ、ソートの「ポーズ」クラスが可能になります。