以下哪项更快,为什么?
CGFloat sum = 0;
for (UIView *v in self.subviews)
sum += v.frame.size.height;
Run Code Online (Sandbox Code Playgroud)
要么
CGFloat sum = [[self.subviews valueForKeyPath:@"@sum.frame.size.height"] floatValue];
Run Code Online (Sandbox Code Playgroud) 假设我有一个这样的数组:
NSArray *threeDimensionalArray = @[
@[
@[ @"Peter", @"Paul", @"Mary" ], @[ @"Joe", @"Jane" ]
],
@[
@[ @"Alice", @"Bob" ]
]
];
Run Code Online (Sandbox Code Playgroud)
我希望它成为:
@[ @"Peter", @"Paul", @"Mary", @"Joe", @"Jane", @"Alice", @"Bob" ]
Run Code Online (Sandbox Code Playgroud)
我怎样才能最轻松地创建这个扁平阵列?
在Objective-C块的实现中调用超级方法吗?
当我在super上调用一个方法时,会抛出一个EXC_BAD_ACCESS错误但是只要我将这些调用改为[super methodToCall]
,[self methodToCall]
并让消息向上移动响应者链就可以了.
-methodToCall
在该类的实例中没有该块存在的实现,但是在超类中有一个(即,自己继承自的类).
我只是好奇地了解为什么在一个块的实现中调用一个方法在一开始是一个问题(技术上),所以我可以在将来避免它.我怀疑它与块中如何捕获变量以及堆栈和堆有关,但我真的没有具体的想法.
注意:在块存储在属性中之后几秒钟就会调用块实现代码,该属性使用copy,所以我不认为这是块的生命周期的问题,所有看起来都没问题.此外,这只是在iPhone设备(3G)上崩溃,但在iPhone模拟器中没有崩溃.
结果EXC_BAD_ACCESS
:
[self retrieveItemsForId:idString completionHandler:^(NSError *error) {
if (!error) {
[super didRetrieveItems];
} else {
[super errorRetrievingItems];
}
}];
Run Code Online (Sandbox Code Playgroud)
完美,实现-didRetrieveItems
和-errorRetrievingItems
超级类.
[self retrieveItemsForId:idString completionHandler:^(NSError *error) {
if (!error) {
[self didRetrieveItems];
} else {
[self errorRetrievingItems];
}
}];
Run Code Online (Sandbox Code Playgroud) 在PHP中,我需要更改此数据
FirstName | MiddleName | LastName
---------------------------------
Robert | Thomas | Smith
Run Code Online (Sandbox Code Playgroud)
进入字符串"史密斯,罗伯特托马斯"
我不确定我是否需要使用join
,concat
或concat_ws
.
我知道,如果我使用
concat_ws(', ',LastName,FirstName,MiddleName)
Run Code Online (Sandbox Code Playgroud)
然后我得到"史密斯,罗伯特,托马斯",但我需要"史密斯,罗伯特托马斯".
有什么建议?
如何从中删除前导零NSString
?
我有:
NSString *myString;
其值如@"0002060"
,@"00236"
和@"21456"
.
如果它们发生,我想删除任何前导零:
例如,将前一个转换为@"2060"
,@"236"
和@"21456"
.
谢谢.
我有以下包含NSDictionary的NSArray:
NSArray *data = [[NSArray alloc] initWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1], @"bill", [NSNumber numberWithInt:2], @"joe", nil],
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:3], @"bill", [NSNumber numberWithInt:4], @"joe", [NSNumber numberWithInt:5], @"jenny", nil],
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:6], @"joe", [NSNumber numberWithInt:1], @"jenny", nil],
nil];
Run Code Online (Sandbox Code Playgroud)
我想创建一个过滤的NSArray,它只包含NSDictionary使用NSPredicate匹配多个"键"的对象.
例如:
任何人都可以解释NSPredicate的格式来实现这一目标吗?
编辑:我可以使用以下方法获得与所需NSPredicate类似的结果:
NSMutableArray *filteredSet = [[NSMutableArray alloc] initWithCapacity:[data count]];
NSString *keySearch1 = [NSString stringWithString:@"bill"];
NSString *keySearch2 = [NSString stringWithString:@"joe"];
for (NSDictionary *currentDict in data){
// objectForKey will return nil if a key doesn't exists.
if ([currentDict objectForKey:keySearch1] …
Run Code Online (Sandbox Code Playgroud) 我试图NSDateFormatter
在我的应用程序中使用日期字符串并将其格式化为一个NSDate
以便我可以进行日期比较,但是我发现当我使用dateFromString并格式化它时,日期会丢失一天.
NSString *dateString = @"02-06-2012";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:dateString];
NSLog(@"My Date = %@", dateFromString);
[dateFormatter release];
Run Code Online (Sandbox Code Playgroud)
这输出到控制台:
我的日期= 2012-06-01 23:00:00 +0000
我意识到我在游戏中有点迟到准备好沙箱,但事实就是如此.
我正在为OS X 10.9开发.该应用程序显示日历事件数据,但不允许编辑,因此我启用了日历功能.
当我从Xcode运行它时,该应用程序可以很好地启用沙盒,但是当我使用开发者ID导出它时,应用程序会运行,但无法访问日历数据.更重要的是,系统永远不会要求我允许该应用访问日历数据.
当我运行应用程序时,它会启动,但不会显示任何数据.在Console中,sandboxd会抛出一堆如下所示的错误:
sandboxd: ([54]) appleeventsd(54) deny file-read-metadata /Library
和
sandboxd: ([54]) appleeventsd(54) deny mach-lookup com.apple.ocspd
我已经检查了应用程序的权利codesign -d --entitlements
,并确认它是沙盒并具有日历权利.但是,当我在应用程序中检查它是否有权访问[EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]
时,不出所料,因为它从未问过,返回EKAuthorizationStatusNotDetermined
.
我觉得我遗漏了一些关于权利,代码签名或部署的非常基本的东西,但我不知道它是什么.所以我把自己放在你的集体怜悯和智慧上.
我的客户想要使用"无线安装应用"功能.
使用它,他可以直接从我的服务器下载应用程序,无需同步他的设备.我在互联网上搜索,我得到了一些信息,因为我需要两个文件
我知道如何创建(.ipa)文件,但我不知道(.plist)文件.如果有任何人知道如何创建(.plist)文件请分享您的想法.
我正在制作一些文本查看器应用程序 目前我需要非常频繁和精确的线路处理能力,所以我想要继承NSTextStorage
类.但我找不到任何方法来设置新的文本存储NSTextView
.我能找到的唯一方法是
-[NSLayoutManager replaceTextStorage:]
Run Code Online (Sandbox Code Playgroud)
方法.但令人困惑的是,这是我正在寻找的.因为它似乎只是替换链接的NSLayoutManagers而不是NSTextView的文本存储.
我还考虑了子类化NSTextView和重写-textStorage
方法,但如果该类不是为子类设计的,那么它将产生未定义的结果.
有人试图在NSTextView上使用自定义NSTextStorage吗?我怎样才能做到这一点?或者这是否被设计禁止?
objective-c ×7
cocoa ×4
cocoa-touch ×3
ios ×2
iphone ×2
block ×1
code-signing ×1
ekeventstore ×1
entitlements ×1
ipad ×1
kvc ×1
macos ×1
mysql ×1
nsarray ×1
nsdate ×1
nspredicate ×1
nsstring ×1
nstextview ×1
php ×1
sandbox ×1
subclassing ×1
xcode ×1