这是我写的一个小测试程序:
#import <Foundation/Foundation.h>
int main(int argc, char **argv) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSArray *arr = [NSArray array];
printf("Arr isMemberOfClass NSArray: %d\n", [arr isMemberOfClass:[NSArray class]]);
printf("Arr isKindOfClass NSArray: %d\n", [arr isKindOfClass:[NSArray class]]);
[pool release];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的输出:
$ ./ismemberof
Arr isMemberOfClass NSArray: 0
Arr isKindOfClass NSArray: 1
Run Code Online (Sandbox Code Playgroud)
-isMemberOfClass:任何Foundation类中的方法有用吗?我理解这可能会为我子类的类提供所需的结果,但对于基础类 - 我发现我的arr变量的结果是非直观的.之所以会发生这种情况,是因为NSArray不是一个具体的类,而是一个抽象类,并且在引擎盖下NSArray实际上是NSCFArray的具体实例?
我在布尔属性上使用键值观察NSObject方法:
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
Run Code Online (Sandbox Code Playgroud)
这个关键路径的值最有趣的部分是BOOL,它在YES/NO之间不断翻转.我从更改字典中获得的最多是kind = 1.无论如何没有探测我正在观察的对象,看看实际的变化值是什么?
谢谢.
这不是垃圾收集环境
我有一个类实例变量,在我的运行时的某个时刻,我需要使用与最初构造时不同的数据集重新初始化.
假设,如果我有一个NSMutableArray或一个NSMutableDictionary,那么做一些事情会更有效:
[myArr release];
myArr = [[NSMutableArray alloc] init....];
Run Code Online (Sandbox Code Playgroud)
要不就,
myArr = nil;
Run Code Online (Sandbox Code Playgroud)
myArr是否会释放该对象并让我没有指向内存中的存储器的指针,这样我就可以重新使用myArr了?
我有一个守护进程在服务器上运行,该服务器被锁存到TCP/IP端口上.我正在寻找是否有任何支持iPhone/Cocoa-touch框架,它提供了一个很好的OO包装器,可以通过IP套接字与守护进程通话.我需要能够以命令交互式查询守护进程并检索返回信息.
如果没有任何OO包装器用于这样的任务,那么下一个最好的选择是什么?
我正在寻找一种直接的方法来转换RGB的颜色,从像Photoshop这样的工具中抓取它,然后将其转换为UIColor.由于UIColor对每个颜色空间使用0.0到1.0的标准化色域,我不确定如何完成.
谢谢你的解决方案.
在iPhone上广泛使用SQLite时,要记住哪些最佳实践?提示/技巧/便利因素均受到赞赏.
我很少使用这两种集合类型,因为我通常使用它们的计数器部件NSArray,NSDictionary以及等效的可变部件.我有一种感觉,我错过了一个集合,在某些情况下它可以比其他两个更快.何时是使用这些的理想时间以及如何使用?
我希望生成一个随机数并将其发布到数据库中的表中,以用于特定的user_id.问题是,相同的数字不能使用两次.有一百万种方法可以做到这一点,但我希望非常热衷于算法的人能够在一个优雅的解决方案中巧妙地解决问题,因为满足以下条件:
1)对数据库的查询量最少.2)在内存中进行数据结构爬行的次数最少.
基本上这个想法是做以下事情
1)创建0到9999999之间的随机数
2)检查数据库以查看数字是否存在
或者
2)查询数据库中的所有数字
3)查看返回的结果是否与数据库中的数据匹配
4)如果匹配,重复步骤1,如果没有,问题就解决了.
谢谢.
我在假设的UITableView中有三个部分.我想要一个处于编辑模式的部分.其余部分不处于编辑模式.这有可能吗?
将标签置于中心的最佳方法是UIView什么?如果你做的事情如
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x / 2, view.frame.origin.y / 2, 50.0, 50.0)];
Run Code Online (Sandbox Code Playgroud)
然后,您将标签的原点设置为视图的中心.最好的选择是使用center属性将视图的中心设置为该点.所以我尝试使用以下代码:
UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
aView.backgroundColor = [UIColor darkGrayColor];
CGRect frame = aView.frame;
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)];
[aLabel setCenter:CGPointMake(frame.origin.x / 2, frame.origin.y / 2)];
Run Code Online (Sandbox Code Playgroud)
这会产生一个标签,它几乎超出了左上角视图的范围.
objective-c ×9
cocoa-touch ×7
iphone ×6
cocoa ×4
ios ×2
algorithm ×1
colors ×1
foundation ×1
mysql ×1
php ×1
pseudocode ×1
random ×1
rgb ×1
sqlite ×1
uikit ×1
uilabel ×1