我必须在我的应用程序中执行一系列下载和数据库写入操作.我正在使用NSOperation
和NSOperationQueue
相同的.
这是应用场景:
如上所述,我NSOperation
为每项任务定义了一个.在第一种情况下(Task1),我向服务器发送请求以获取所有邮政编码.将在该会议中的代表NSOperation
接收数据.然后将该数据写入数据库.数据库操作在不同的类中定义.从NSOperation
类I开始调用数据库类中定义的write函数.
我的问题是数据库写操作是在主线程还是后台线程中发生的?正如我在其中调用它一样, NSOperation
我期望它在不同的线程(Not MainThread)中运行NSOperation
.有人可以在处理NSOperation
和解释这个场景时解释NSOperationQueue
.
我有一个像这样的字符串"A. rahul VyAs"
我想删除"A."和"A"之后的空格 所以新的字符串将是"rahul VyAs"
我如何实现这一目标?
发生了什么
目前我有一个使用两个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)
仍然是同样悲伤的结果.
是)我有的:
要创建这一行,我基本上有一个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上找到,所以如果有人可以给我参考它,我将不胜感激. …
我需要创建一个字典/ hashmap
NSObject
NSDictionary
在这里不会工作(枚举不符合NSCopying
).
我也许可以在CFDictionaryRef
这里使用,但我想知道是否还有其他方法可以实现这一点.
我正在寻找一个很好的示例项目/教程,展示了Kiwi测试框架的实际应用.我不需要任何更多的测试类的例子,其唯一目的是将2个数字加在一起或者像这样平凡的东西.已经有很多这样的例子.
我对测试UIViewController子类和负责数据获取的类的策略特别感兴趣.
针对Web服务进行测试的策略是什么?它是从fetch调用中删除返回方法吗?
我想知道两件事:
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
不是函数或函数指针.
我有两个第三方库似乎使用相同的类.这应该没问题,但我在构建时遇到了这种错误:
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)
我该如何处理这个问题......
- 编辑 -
...如果源文件不可用?
我看到了这个问题,但我仍然无法导入框架并在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 ×7
objective-c ×7
iphone ×3
xcode ×3
block ×1
calayer ×1
carthage ×1
cocoa ×1
cocoa-touch ×1
dictionary ×1
enums ×1
hashtable ×1
kiwi ×1
nsoperation ×1
nsstring ×1
quartz-2d ×1
swift ×1
tdd ×1
uiview ×1
xcode7 ×1
xcode7-beta2 ×1