2024-09-22 16:14:59
这位哥哥你好,其实我要问的是这样的: UILabel *labelA = [ [ UILabel alloc ] init ]; 比如说这段代码:alloc是分配内存,init是初始化对象,但是前面的UILabel和后面的UILabel我有些分不清楚。
能帮忙解释下这两个UILabel吗,, 谢谢啦。
这位弟弟,如果你这么问的话你需要去看基础语法。
首先明白现在是面向对象的编程
UILabel是类名,继承于UIView,最终你会发现,它的最父类是NSObject。
在NSObject你会发现有个方法是+ (id)alloc;
所以[ UILabel alloc ]是调用UILabel的这个+方法
而UILabel *labelA的这个UILabel *,是指定义一个UILabel类型的变量labelA。
前面的UILabel意思是:创建个labelA实力变量 这个实例变量是UILabel类型的,
后面的UILabel意思是:为实例变量labelA在UILabel中分配一块内存。
我这样理解对么哥哥?
后面的说法有一点不对妹妹
不是在UILabel中分配一块内存,是在内存中分配一块空间给labelA,这块空间是UILabel那么大,有多大呢,我不知道,alloc知道。
大体上理解的已经不错了。
UIImage *imageForMax = [imageMaxBase stretchableImageWithLeftCapWidth:4 topCapHeight:0];
那这段代码又怎样理解呢?imageForMax是UIImage的实例变量,然后后面怎么理解呢?imageMaxBase是UIImage刚刚初始化出来的一个实例变量啊,把这个实例变量imageMaxBase写在这个位置是什么意思呢?
你看看你,一个问题你追问了3次,我是买一送三啊。再追问好像就要扣你分了
你还是没有理解,
UIImage是类,alloc是类方法,功能是创造出一个实例
imageForMax是实例,stretchableImageWithLeftCapWidth: topCapHeight:是实例方法(减号方法)
UIImage类就好像一个模板,呱唧,造了一个imageForMax实例,它还能再造一个imageForMax2,imageForMax3 ,更多更多。
虽然这些实例是不一样的实例,但他们都被UIImage赋予了可以调用stretchableImageWithLeftCapWidth: topCapHeight:的能力。