小编Rui*_*res的帖子

NSOperation和NSOperationQueue工作线程vs主线程

我必须在我的应用程序中执行一系列下载和数据库写入操作.我正在使用NSOperationNSOperationQueue相同的.

这是应用场景:

  • 从一个地方获取所有邮政编码.
  • 对于每个邮政编码取得所有房屋.
  • 为每个房子取回居民的详细信息

如上所述,我NSOperation为每项任务定义了一个.在第一种情况下(Task1),我向服务器发送请求以获取所有邮政编码.将在该会议中的代表NSOperation接收数据.然后将该数据写入数据库.数据库操作在不同的类中定义.从NSOperation类I开始调用数据库类中定义的write函数.

我的问题是数据库写操作是在主线程还是后台线程中发生的?正如我在其中调用它一样, NSOperation我期望它在不同的线程(Not MainThread)中运行NSOperation.有人可以在处理NSOperation和解释这个场景时解释NSOperationQueue.

multithreading objective-c nsoperation nsoperationqueue ios

80
推荐指数
4
解决办法
9万
查看次数

如何从nsstring中删除前3个字符?

我有一个像这样的字符串"A. rahul VyAs"

我想删除"A."和"A"之后的空格 所以新的字符串将是"rahul VyAs"

我如何实现这一目标?

iphone xcode objective-c nsstring

68
推荐指数
1
解决办法
7万
查看次数

UICollectionView的单元格消失了

发生了什么

目前我有一个使用两个UICollectionViews内部的应用程序UITableView.这样我创建了一个类似应用程序的Pulse News.我的问题是,有时第6行和第11行完全消失,留下一个空白区域应该是单元格.我真的不介意,如果所有细胞都是这样的(这种方式我可以假设我没有做正确的事情),但问题是,正好发生在那些特定的细胞上.

我的理论

第6行和第11行是我开始滚动时出现的行,所以默认情况下我可以看到5个单元格,当我进行第一次水平滚动时,第6行会出现(有时会出现空白).

是)我有的

我目前唯一要做的就是:

 [self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER];
Run Code Online (Sandbox Code Playgroud)

viewDidLoad.在创建细胞时:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];

    NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]];

    [cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController];

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

所以在我的承诺中没有任何幻想在这里发生.我虽然在数据源(虚拟JSON文件)上有问题,但有时它工作正常并且单元格显示,所以我猜从那部分是可以的.

所以我的"问题":有谁知道发生了什么?我真的不想说这是来自iOS的错误,但我想不出别的什么.


编辑1.0

令人惊讶的是这种方法

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
Run Code Online (Sandbox Code Playgroud)

indexPath不计算[0,5]的情况下从[0,4]变为[0,6].我第一次真正在iOS中看到这种情况.


编辑2.0

我已经改变了创建单元格的方式,而不是出列我使用旧方法:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil];
MyCell *cell = (MyCell *)[nib objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

仍然是同样悲伤的结果.

xcode ios uicollectionview uicollectionviewcell

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

UIView带有虚线

是)我有的:

在此输入图像描述

要创建这一行,我基本上有一个UIView,我做以下事情:

void setLayerToLineFromAToB(CALayer *layer, CGPoint a, CGPoint b, CGFloat lineWidth)
{
    CGPoint center = { 0.5 * (a.x + b.x), 0.5 * (a.y + b.y) };
    CGFloat length = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
    CGFloat angle = atan2(a.y - b.y, a.x - b.x);

    layer.position = center;
    layer.bounds = (CGRect) { {0, 0}, { length + lineWidth, lineWidth } };
    layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
}
Run Code Online (Sandbox Code Playgroud)

注意:此代码在stackoverflow上找到,所以如果有人可以给我参考它,我将不胜感激. …

iphone calayer uiview quartz-2d ios

27
推荐指数
8
解决办法
4万
查看次数

Cocoa:带枚举键的字典?

我需要创建一个字典/ hashmap

  • 键是枚举
  • 值是一些子类 NSObject

NSDictionary在这里不会工作(枚举不符合NSCopying).

我也许可以在CFDictionaryRef这里使用,但我想知道是否还有其他方法可以实现这一点.

cocoa enums dictionary hashtable objective-c

24
推荐指数
4
解决办法
2万
查看次数

Kiwi测试库的任何优秀示例项目(提供的复杂性超过2 + 2)

我正在寻找一个很好的示例项目/教程,展示了Kiwi测试框架的实际应用.我不需要任何更多的测试类的例子,其唯一目的是将2个数字加在一起或者像这样平凡的东西.已经有很多这样的例子.

我对测试UIViewController子类和负责数据获取的类的策略特别感兴趣.

针对Web服务进行测试的策略是什么?它是从fetch调用中删除返回方法吗?

tdd objective-c ios kiwi

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

isa指针在objective-c中

从这个参考:

创建新对象时,将分配其内存,并初始化其实例变量.对象变量中的第一个是指向其类结构的指针.这个名为isa的指针使对象可以访问它的类,并通过该类访问它继承的所有类.

从我能理解的读到这个,它允许,一个,使用内省但是以务实的方式(iOS开发),程序员可以从知道/理解这个特殊指针中获益吗?

objective-c ios

16
推荐指数
3
解决办法
1万
查看次数

iOS阻止内省

我想知道两件事:

1-是否可以通过使用objective-c内省来了解块的返回类型.

例如:int (^CountBlock)(NSArray *array)我想知道它将返回的类型int.

第二个问题是:

2-我可以保留对通用块的引用吗?我的意思是,基本上我可以id myBlock用这个答案做第一个问题.

我尝试了什么

这种东西是不可能的:

id aBlock = ^{

    NSString * aString = @"OMG";

    return aString;
};

aBlock();
Run Code Online (Sandbox Code Playgroud)

由于编译器发现它id aBlock不是函数或函数指针.

introspection block objective-c ios

16
推荐指数
1
解决办法
2983
查看次数

如何处理来自第三方库的重复符号错误?

我有两个第三方库似乎使用相同的类.这应该没问题,但我在构建时遇到了这种错误:

ld: duplicate symbol .objc_class_name_CJSONScanner in /Users/myappOne/TapjoyConnect/Frameworks/libTapjoyConnectSimulatorRewardInstall_Ads_Pinch.a(CJSONScanner.o) and /Developer/Projects/BuildOutput/Debug-iphonesimulator/OtherLibrary_d.a(CJSONScanner.o)
Run Code Online (Sandbox Code Playgroud)

我该如何处理这个问题......

- 编辑 -

...如果源文件不可用?

iphone xcode cocoa-touch objective-c

15
推荐指数
2
解决办法
7143
查看次数

Xcode 7 beta 2上的"没有这样的模块"

我看到了这个问题,但我仍然无法导入框架并在Xcode 7 beta 2(7A121l)中使用它.

所以目前我正在尝试使用结果,通过carthage.将其添加到带有二进制嵌入框架的构建阶段/链接二进制文件后,我能够成功编译,但是我收到错误说明(是的,它表示成功,然后是错误:S):

No such module 'Result'
Run Code Online (Sandbox Code Playgroud)

关于进口:

import Result

func serverRequest() -> Result<String, NSError> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

构建能够运行和编译,但我无法cmd +单击Result,例如.


编辑1: 在Xcode 6.3.2上它按预期工作.

编辑2: 打开雷达:21588771

ios swift carthage xcode7 xcode7-beta2

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