1

Instagramのようなアプリケーションを開発しています。cellForRowAtIndexPathボタンを外すためのオブジェクトを作成し、自動解放するたびに、のコードがあります。このボタンはユーザー名を表示し、合計で 1、2、3、4、5 などのユーザーが表示されます。そこにはUIButton、coutのように依存して作成します。私は使用していませんARC

ただし、setColour のときに時々クラッシュします (毎回ではない)。

有効にしましたがNSZombie、次のように言い続けます:

[UIDeviceRGBColor set]: 割り当て解除されたインスタンス 0x21b526f0 に送信されたメッセージ

            UIButton *btnLikeUserName = [[[UIButton alloc] init] autorelease];
                [btnLikeUserName.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];

                if (posx + size.width > 280) {
                    posy = posy + 22;
                    posx = 18;
                    btnLikeUserName.frame = CGRectMake(posx,posy,size.width,size.height);
                    posx = posx + size.width + 5;
                }
                else {
                    btnLikeUserName.frame = CGRectMake(posx,posy,size.width,size.height);
                    posx = posx + size.width + 5;
                }
                btnLikeUserName.tag = shareObjU.userId;
                [btnLikeUserName setTitle:text forState:UIControlStateNormal];
                [btnLikeUserName setTitleColor:[UIColor colorWithRed:50/255.0 green:79/255.0 blue:133/255.0 alpha:1.0] forState:UIControlStateNormal]; ////Hear is crash
                [btnLikeUserName addTarget:self action:@selector(btnLikeUserNameClick:) forControlEvents:UIControlEventTouchUpInside];
                [cell.viewLikeComment addSubview:btnLikeUserName];

次のリンクも参照してください

UISwitch setThumbTintColor がクラッシュを引き起こす (iOS 6 のみ)?

4色のうち1色がエラーを返す

colorWithRed:green:blue:alpha を使用すると iOS アプリがクラッシュする

およびその他..しかし、すべてグローバルオブジェクトについて述べています。ローカル オブジェクトではありません。どうすれば解決できますか。ありがとうございました

4

1 に答える 1

2

このコードを試してください...

[btnLikeUserName setTitleColor:[UIColor colorWithRed:((float) 50 / 255.0f)  
                           green:((float) 79 / 255.0f)  
                            blue:((float) 133 / 255.0f)  
                           alpha:1.0f] forState:UIControlStateNormal];

または以下のように設定することもできますUIColor

[btnLikeUserName setTitleColor:[UIColor colorWithRed:50.0f/255.0f green:79.0f/255.0f blue:133.0f/255.0f alpha:1.0] forState:UIControlStateNormal];

そして、ここUIButtonsですべてのセルに追加してから、毎回allocとautoreleaseではなく、次のように定義しようとします.....

   UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

* UPDATE : * GridView のような複数のボタンを使用してすべてのセルに追加する例を参照してください

 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
 button.frame = rect;
 button.tag = imageIndex;
 [button addTarget:self  action:@selector(btnTemp_Clicked:)
                 forControlEvents:UIControlEventTouchDown];

 [button setTitle:[arrTime objectAtIndex:imageIndex] forState:UIControlStateNormal];
 [button.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];

 //[button setTitleColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"circle03.jpg"]] forState:UIControlStateNormal ];                
 [button setTitleColor:[UIColor colorWithRed:50.0f/255.0f green:79.0f/255.0f blue:133.0f/255.0f alpha:1.0] forState:UIControlStateHighlighted ];

 [button setNeedsDisplay];

 [gridCell.contentView addSubview:button];
于 2013-04-25T11:01:26.563 に答える