标签: class-cluster

Objective-C中究竟是什么叫做"类群"?

我在读NSArray就是这样的事情.听起来很沉重.我在桌面上有7本非常胖的书,关于Objective-C,Cocoa和C.他们都没有提到Class Cluster,至少我在书的后面的索引中找不到它.那是什么?

cocoa objective-c cocoa-design-patterns class-cluster

89
推荐指数
5
解决办法
3万
查看次数

NSString实例将其类报告为NSCFString

我的目标非常简单 - 我正在尝试设置NSString一些测试数据,然后返回类,这应该是NSString.这是我的代码:

NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);
Run Code Online (Sandbox Code Playgroud)

日志说这个课程NSCFString不是NSString.这里发生了什么?

cocoa class objective-c nsstring class-cluster

20
推荐指数
2
解决办法
1万
查看次数

Swift中的自定义类集群

这是一种相对常见的设计模式:

/sf/answers/1191052901/

它允许您从init调用中返回子类.

我试图找出使用Swift实现相同功能的最佳方法.

我知道有很好的方法可以用Swift实现同样的功能.但是,我的课程将由现有的Obj-C库初始化,我无法控制.因此它需要以这种方式工作并且可以从Obj-C调用.

任何指针都将非常感激.

design-patterns class-cluster ios automatic-ref-counting swift

12
推荐指数
1
解决办法
3925
查看次数

如果我想添加类型属性,是否将NSNotification子类化为正确的路径?

我正在尝试子类NSNotification.

Apple的文档NSNotification陈述如下:

NSNotification是一个没有实例变量的类集群.因此,你必须继承NSNotification和覆盖原始的方法 name,objectuserInfo.您可以选择任何您喜欢的指定初始值设定项,但请确保您的初始化程序不会调用 (via )NSNotification的实现. 并不意味着直接实例化,它的 方法引发了异常.init[super init]NSNotificationinit

但这对我来说并不清楚.我应该创建这样的初始化器吗?

-(id)initWithObject:(id)object
{
    return self;
}
Run Code Online (Sandbox Code Playgroud)

inheritance cocoa objective-c nsnotification class-cluster

10
推荐指数
1
解决办法
1858
查看次数

ARC的集群初始化程序

通过该解析上类集群文件,NSNumber实现了initWithChar:在大致按以下方式:

- (id)initWithChar:(char)c
{
    [self release];
    return [[__NSCharNumber alloc] initWithChar:c];
}
Run Code Online (Sandbox Code Playgroud)

同样,您可以使用此模式从Nib初始化视图:

- (id)initWithFrame:(CGRect)frame
{
    id realSelf = [[self class] nib] instantiateWithOwner:nil options:nil][0];
    realSelf.frame = frame;
    [self release];
    return realSelf;
}
Run Code Online (Sandbox Code Playgroud)

我想知道,self在这些案件中,ARC是否管理了未退回的释放?是否记录在任何地方?

objective-c class-cluster

9
推荐指数
1
解决办法
267
查看次数

这两种NSString方法之间的区别

所以我今天在接受采访时被问到这个问题,经过一些谷歌搜索仍然无法找到答案(事实上我甚至找不到任何使用[NSString string]方法的代码).

有什么区别

  1. NSString *someString = [NSString string];
  2. NSString *someString = [[NSString alloc] init];

现在我最初的想法是[NSString string]返回一个自动释放的对象,而使用alloc和init将返回一个已保留的对象.然而,似乎这个答案是不正确的.

我查看了苹果文档中的NSString类引用,但它说的只是

Returns an empty string.

+ (id)string 

Return Value
An empty string.
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这两者之间究竟有什么区别吗?

iphone objective-c nsstring class-cluster ios

7
推荐指数
2
解决办法
1709
查看次数

Objective C - 对NSArray进行子类化

我正在尝试子类化NSArray,但它在尝试访问count方法时崩溃了应用程序.我知道这NSArray是一个 类集群.

  • 但是,这是什么意思?
  • 有没有能够继承NSArray的工作?

我知道我可以简单地子类化NSObject并将我的数组作为实例变量,但我宁愿继承子类NSArray.

编辑: 理由:我创建一个纸牌游戏,我有一个类Deck应该继承NSMutableArray有一些额外的方法(-shuffle,-removeObjects:,-renew等),我认为它会寻找更清洁的子类NSArray,而不是一个变种.

cocoa subclass objective-c nsarray class-cluster

5
推荐指数
2
解决办法
4585
查看次数

在UILabel et.al中使用NSString子类

我需要将其他数据编码为NSString(长篇故事,请不要问为什么......)

我已经NSString使用此处概述的方法进行了子类化:

当我将这些子类中的一个指定为UILabel's文本时,我希望在询问标签文本时将其恢复.但事实并非如此.(我得到一个NSString集群实例)

MyString *string = [[MyString alloc] initWithString:@"Some string"];
UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
l.text = string;
NSString *t = l.text;  // not getting the "MyString" object
Run Code Online (Sandbox Code Playgroud)

有没有解决这个问题?

objective-c nsstring class-cluster ios

2
推荐指数
1
解决办法
50
查看次数