除了明显的差异:
enumerateObjectsUsingBlock时,你既需要索引和对象enumerateObjectsUsingBlock当你需要修改局部变量时不要使用被enumerateObjectsUsingBlock普遍认为是好还是坏的时候for (id obj in myArray)也将工作?有哪些优点/缺点(例如性能或多或少)?
以下哪项更快,为什么?
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) 我正在尝试放大地图,该地图专注于与地图关联的所有引脚.我已将该信息保存在我的地图属性中.
我从这开始,但它还没有工作:
double maxLatitude = 0;
double minLatitude = 0;
double maxLongitude = 0;
double minLongitude = 0;
for (MKAnnotation *address in self.map.locations) {
// Latitude
if ([address.latitude doubleValue] > 0) {
maxLatitude = MAX(maxLatitude, [address.latitude doubleValue]);
}
else {
minLatitude = MAX(abs(minLatitude), abs([address.latitude doubleValue]));
}
// Longitude
if ([address.longitude doubleValue] > 0) {
maxLongitude = MAX(maxLongitude, [address.longitude doubleValue]);
}
else {
minLongitude = MAX(abs(minLongitude), abs([address.longitude doubleValue]));
}
}
double centerLatitude = (maxLatitude - abs(minLatitude)) / 2;
centerLatitude *= [self …Run Code Online (Sandbox Code Playgroud) 目前我正试图找到一种平均矩阵的简洁方法.显而易见的解决方案是对矩阵求和,然后除以元素的数量.但是,我在苹果开发者网站上遇到了一种方法,声称可以使用valueForKeyPath以更简单的方式完成此操作.这与以下内容相关联:
以下是我正在努力尝试使其工作的示例:
-(void)arrayAverager
{
NSMutableArray *myArray = [NSMutableArray arrayWithCapacity:25];
[myArray addObject:[NSNumber numberWithInteger:myValue]];
NSNumber *averageValue = [myArray valueForKeyPath:@"@avg.self"];
NSLog(@"avg = %@", averageValue);
}
Run Code Online (Sandbox Code Playgroud)
的问题是:代替平均它仅通过1打印出阵列1中的元素阵列.
UPDATE
-(void) pixelAverager
{
//Put x-coordinate value of all wanted pixels into an array
NSMutableArray *xCoordinateArray = [NSMutableArray arrayWithCapacity:25];
[xCoordinateArray addObject:[NSNumber numberWithInteger:xCoordinate]];
NSLog(@"avg = %@", [xCoordinateArray valueForKeyPath:@"@avg.intValue"]);
}
Run Code Online (Sandbox Code Playgroud) 我有一个NSArray,想知道最大和最小整数.
我目前使用:
int max = [[array valueForKeyPath:@"@max.intValue"] intValue];
int min = [[array valueForKeyPath:@"@min.intValue"] intValue];
Run Code Online (Sandbox Code Playgroud)
但现在我想知道没有输入零的最小值和最大值(数组只有正值)
ex:
array=[3, 6 ,7 , 13, 86, 45, 0]
min=3
max=86
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
我有一个双精度值的数组,范围从0.0到100.0.如果任何值低于10.0,我想提醒用户.我做了一些搜索,我能找到的最接近的是:
- (BOOL)containsObject:(id)anObject
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用这种方法来查看值是否低于10?我尝试了以下代码行,但收到了两个错误.
if ([myArray containsObject:[NSNumber numberWithDouble:(<10)])
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我很感激你的帮助.这似乎是一项非常基本的任务.