我的理解是这两个都创建了一个NSMutableString,只有第一个由系统拥有,第二个由我拥有(即我需要释放它).是否有任何特殊原因我应该使用其中一个,从表面看它似乎更容易使用第一个?也是第一个更好的,因为它给编译器一个大小的感觉?
NSMutableString *newPath = [NSMutableString stringWithCapacity:42];
Run Code Online (Sandbox Code Playgroud)
要么
NSMutableString *newPath = [[NSMutableString alloc] init];
Run Code Online (Sandbox Code Playgroud)
编辑......还
我看到很多声明写在两行(即)
NSMutableString *newPath;
newPath = [NSMutableString stringWithCapacity:42];
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢单行,这只是个人风格的另一个例子吗?
有没有人知道我需要添加到摘要字段的显示格式化程序,以显示NSArray中包含的NSString对象的内容?我已经为NSArray添加了以下格式化程序,以便显示其内容......
"{(int)[$VAR count]} objects {(NSString *)[(NSArray *)$VAR description]}:s"
Run Code Online (Sandbox Code Playgroud)

我真的希望(0-6标记为红色)在"摘要"中显示如下:
0 =星期一
1 =星期二
2 =周三
3 =周四......等
加里
当我使用NSKeyedArchiver是写入*.plist的数据时,我看到一些例子,人们将输出文件缩小为*.txt,甚至根本没有扩展名?
-(void)saveCore {
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:reactorCore forKey:@"CORE"];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];
[data release];
[archiver release];
}
Run Code Online (Sandbox Code Playgroud)
加里
我有一个最初使用iOS 3.1编写的应用程序上周我通过iTunes Connect对应用程序进行了更新,但错误地将"Base SDK"和"iPhone OS部署目标"都设置为4.1我现在计划重新提交应用程序"基础SDK:4.1"和"iPhone OS部署目标:3.1"
我的问题是:因为它当前发布的两个值都设置为4.1,这意味着应用程序将只在4.1上运行,虽然我猜它会在4.1以后的任何时候运行?N/B:应用程序与3.1完全兼容(即它不使用任何4.0功能)
我对这两个选项的理解是: "Base SDK"是iOS所需功能的最新版本号."iPhone OS部署目标"是您将支持的最早的iOS版本号
今天我只是快速玩积木,我遇到了错误:
NSString *(^testBlock)(int) = ^(int option) {
if (option == 1) return @"ONE";
if (option == 2) return @"TWO";
return nil;
};
NSLog(@"OUTPUT: %@", testBlock(4));
Run Code Online (Sandbox Code Playgroud)
Return type 'void *' must match previous return type 'NSString *' when block literal has unspecified explicit return type
Run Code Online (Sandbox Code Playgroud)
因为我真的想要返回nil,如果没有输入"1"或"2",我决定简单地使用以下命令将最终返回值转换回NSString:
NSString *(^testBlock)(int) = ^(int option) {
if (option == 1) return @"ONE";
if (option == 2) return @"TWO";
return (NSString *) nil;
};
Run Code Online (Sandbox Code Playgroud)
这很好用,我只是好奇,如果这是正确的解决方案,甚至是不好的练习,因为我从来没有考虑过铸造零呢?
类实例的默认描述返回"ClassName:0x105120".我如何修改下面的方法只返回"ClassName"?
// The code below just returns the address ...
- (NSString *)description {
NSString *result;
result = [NSString stringWithFormat:@"%p", self];
return result;
}
Run Code Online (Sandbox Code Playgroud)
编辑:在这种情况下,这是正确的吗?虽然我明白如果我想将className作为NSString实际获取,我应该使用NSStringFromClass([self class])
- (id)init {
NSLog(@"_init: %@", [self class]);
[super init];
return self;
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢-gary-
如果我在创建对象时创建一个包含两个对象指针(见下文)的新对象,则将指针设置为指向nil;
@interface rocketShip : NSObject {
NSString *name;
NSNumber *thrust;
}
Run Code Online (Sandbox Code Playgroud)
如果(出于某些意外的原因)我没有分配这些指针,后来在我的dealloc方法中释放它们就好了,我很确定它是,只是想检查一下?
- (void)dealloc{
[name release];
name = nil;
[thrust release];
thrust = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
加里
我只是很好奇,有没有办法通过NSLog打印结构的内容?
id <MKAnnotation> mp = [annotationView annotation];
MKCoordinateRegion region =
MKCoordinateRegionMakeWithDistance([mp coordinate], 350, 350);
Run Code Online (Sandbox Code Playgroud)
我正在尝试输出什么[mp coordinate]进行调试.
.
我破解了它,除非有另一种方法.
CLLocationCoordinate2D location = [mp coordinate];
NSLog(@"LAT: %f LON: %f", location.latitude, location.longitude);
Run Code Online (Sandbox Code Playgroud) 有没有办法改变使用的"滑动" [DELETE]按钮的框架UITableViewCells?目前它在细胞内垂直居中,但如果可能的话,我想将其移至青色指南展.

我注意到有些应用程序会在settings.bundle中添加条目,这些条目只代表一个固定/不可编辑的字符串.

我只在列表中看到这些,并且唯一关闭的是"文本字段",但这是可编辑的.

有没有办法在Root.plist中指定它?