何时用self引用会加1,[UIImage imageNamed]使用

代码粘的多了点,看着清楚一点
SetupAccountViewController.h文件,声明m_comBoxView,线程不安全,retain(self调用引用+1)

#import <UIKit/UIKit.h>
#import "ComBoxView.h"

@interface SetupAccountViewController : UIViewController
{
ComBoxView *m_comBoxView;
}
@property (retain,nonatomic) ComBoxView *m_comBoxView;
@end


接下来看看m文件

- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableArray* array=[NSMutableArray arrayWithObjects:@"btn_img_listBox", @"btn_img_bolg_background", @"btn_img_listBox", @"btn_img_bolg_background", @"btn_img_listBox", @"btn_img_bolg_background", nil];

//114 view宽,150view tableview+btn高度
CGRect frame = CGRectMake(180, 46, 114, 150);


//注意为什么新alloc一个ComBoxView呢,直接调用self.m_comBoxView是没问题的,重新alloc是为了今后有跟子线程交互时更安全,而且保证self.m_comBoxView引用级数为1,不会发生+2+3的情况
ComBoxView *comBoxView = [[ComBoxView alloc] initWithFrame:frame];
comBoxView.m_downListDataSource = array;
self.m_comBoxView = comBoxView;
//tab默认背景黑
m_comBoxView.backgroundColor = [UIColor clearColor];
[m_comBoxView setImgLeftMark:[array objectAtIndex:0]];
[comBoxView release];


self.title = kViewtitle;
[self.view addSubview:m_comBoxView];
}

[color=red]self.m_comBoxView = comBoxView;[/color]
这一句比较重要,就是说只有self调用赋值,这个时候引用技术才会+1
m_comBoxView.backgroundColor = [UIColor clearColor];改成
self.m_comBoxView.backgroundColor = [UIColor clearColor];作用相同,也不会影响引用计数,因为这里是调用属性。


[color=red]下面这个还没有遇到过,但是有朋友说,所以记录一下!大家都注意[/color]
myImage = [UIImage imageNamed:@"icon.png"];
这种方法在application bundle的顶层文件夹寻找由供应的名字的图象 。 如果找到图片,装载到iPhone系统缓存图象。那意味图片是(理论上)放在内存里作为cache的。
所以使用小图或者少量图是可以的,大量图则该选用
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];

不过这种方法要注意了,如果有高清图,也就是@2x的,就不能自动获取到了,自己把握吧,做ui可以用imageNamed,要处理的大图就别这样加载了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值