我有一个应用程序,它使用一个连接队列来处理后台线程上的连接.每个连接发送一个JSON帖子,然后当它收到成功时,将一些对象保存到coredata中.
一旦所有连接完成,我调用dispatch_async主线程来调用finished方法.
但是,在非常特定的数据发送/保存条件下,我注意到dispatch_async主线程的块永远不会被调用,应用程序屏幕冻结,所有执行停止,应用程序处于空闲状态并冻结屏幕.根据xcode的处理能力为0%.
这是块失败的方法.
- (void)connectionDidComplete
{
_completeConnections++;
_syncProgress = (float)_completeConnections / (float)_totalConnections;
dispatch_async(mainQueue, ^(void) {
[[NSNotificationCenter defaultCenter] postNotificationName:SyncQueueDidUpdateNotification object:nil];
}); <-- this dispatch works
if (_completeConnections == _totalConnections)
{
// clear unsynced data
NSArray *syncedObjects = [SyncObject completedSyncObjects];
if (syncedObjects.count > 0)
{
for (SyncObject *syncObject in syncedObjects)
{
[syncObject delete];
}
}
//this method saves the current context, then merges this context with the main context right after
[[VS_CoreDataManager sharedManager] saveManagedObjectContextAndWait:managedObjectContext];
// …Run Code Online (Sandbox Code Playgroud) 我想创建一个返回咖喱函数的函数,如下所示
func addTwoNumbers(a: Int)(b: Int) -> Int {
return a + b
}
addTwoNumbers(4)(b: 6) // Result: 10
var add4 = addTwoNumbers(4)
add4(b: 10) // returns 14
Run Code Online (Sandbox Code Playgroud)
这种函数的返回类型是什么?如何使用采用Variadic参数的函数生成这样的函数.
func generateCurry(.../*Variadic parameters*/) -> .../*curry function type*/ {
return ...//curry function
}
Run Code Online (Sandbox Code Playgroud)
我想要一个通用的解决方案,而不是只将Int作为参数在generateCurry函数的参数中
let curried = curry(func(a, b, c) {
print(a + b + c)
})
curried(1)(2)(3) //prints 6
Run Code Online (Sandbox Code Playgroud) 有没有办法用swift2以编程方式在Core Data上创建实体?我搜索了它,但我找不到东西.
我有一个视图,其中包含几个子视图,这些子视图是具有多个按钮的复杂控件 superview具有用于水龙头,滑动等的手势识别器.
在某些情况下,当接收单次或双次触摸时,我希望超级视图将手势识别器传递给子视图以进行治疗.
例如:
singletaprecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSingleTapGestureRecognizerDetected:)];
- (void)onSingleTapGestureRecognizerDetected:(UITapGestureRecognizer*)theTapGestureRecognizer
{
if (someCaseHappens) {
// do something with the gesture - for instance - move a control from one place to another or some other UI action in the superview
}
else {
// the subview will need to get the gesture and do something with it (imagine the touch was inside a button in a subview - the top superview should disregard the gesture and the button …Run Code Online (Sandbox Code Playgroud) 我对Swift 2.2(Xcode 7.3)感到沮丧.要模拟它,只需在用户定义的泛型类中创建一个变量,并从其他地方引用该类.例如:
class A<T> {
let genVar = 1
}
class MyViewController: UIViewController {
let myVar = A<Int>() // crash is here
}
Run Code Online (Sandbox Code Playgroud)
如果您将在运行iOS 7(iPhone 4,在我的情况下)的设备上运行此代码,则会尝试创建泛型类型的变量.以下是设备崩溃日志的第一行:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x00298910
Triggered by Thread: 0
Thread 0 Crashed:
0 libswiftCore.dylib 0x006b1d64 0x4bd000 + 2051428
1 Phone 0x001c76ec 0xab000 + 1165036
2 libswiftCore.dylib 0x006b307c 0x4bd000 + 2056316
3 libswiftCore.dylib 0x006b2f70 0x4bd000 + 2056048
4 libswiftCore.dylib 0x006b0f24 0x4bd000 + 2047780
5 libswiftCore.dylib 0x006b107c 0x4bd000 + 2048124
6 …Run Code Online (Sandbox Code Playgroud) 我试图垂直居中tableViewHeader的文本标签.这是相关的代码- (void) tableView: (UITableView*) tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section:
- (void) tableView: (UITableView*) tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
if(![view isKindOfClass:[UITableViewHeaderFooterView class]]){
return;
}
UITableViewHeaderFooterView *tableViewHeaderFooterView = (UITableViewHeaderFooterView *) view;
UILabel* label = tableViewHeaderFooterView.textLabel;
label.textAlignment = NSTextAlignmentCenter;
label.font = [UIFont rev_lightAppFontOfSize: 24.0f];
label.textColor = [UIColor rev_colorWithHex: 0x858585];
label.text = [label.text capitalizedString];
label.center = tableViewHeaderFooterView.center; // label not in superview yet
tableViewHeaderFooterView.layer.borderColor = [UIColor greenColor].CGColor;
tableViewHeaderFooterView.layer.borderWidth = 2.0f;
tableViewHeaderFooterView.contentView.layer.borderColor = [UIColor purpleColor].CGColor;
tableViewHeaderFooterView.contentView.layer.borderWidth = 2.0f;
label.layer.borderColor = [UIColor orangeColor].CGColor;
label.layer.borderWidth = 2.0f; …Run Code Online (Sandbox Code Playgroud) 我正在尝试对iOS 7进行调整,以便当设备是ARM64时它运行一个版本而不是它运行另一个版本(因为浮点数是32位而双重是64(如果你有一个解决方案)让我知道.)
所以就是这样
if ARM64 {
\\run double code
}
else {
\\run float code
}
Run Code Online (Sandbox Code Playgroud) 我的项目有两个目标.它们中的每一个都具有UI元素的不同图像.(只有图像的颜色不同.尺寸相同).已创建第一个目标的视图.我正在寻找一种方法来重新设计第二个目标的应用程序.有任何想法吗?
我正在使用MBProgressHUD自定义控件来显示从Web加载JSON数据.
我已经在他们的视图中找到了很多没有正确显示HUD控件的答案.
这是HUD我的视图中显示的代码.
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
Run Code Online (Sandbox Code Playgroud)
这就是我隐藏HUD视图的方式.
[MBProgressHUD hideHUDForView:self.view animated:YES];
Run Code Online (Sandbox Code Playgroud)
在ViewDidLoad中,该控件正常工作.
但是当我点击刷新按钮并想要显示HUD控制时,它不显示HUD控制.
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_queue_t myqueue = dispatch_queue_create("queue", NULL);
dispatch_async(myqueue, ^{
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:nil waitUntilDone:YES];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tbl reloadData];
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
});
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么?请帮我.
我有一个iOS应用程序,我最近更新,以处理UIAlertView/SubView问题,导致文本框呈现为清晰或白色(或根本不渲染,不确定哪个).无论如何,这是一个相对简单的问题,因为我是Obj-C的新手,但我如何从应用程序中的另一个调用中获取新文本框的值?
这是我的UIAlertView:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Password"
message:@"Enter your Password\n\n\n"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Login", nil];
alert.frame = CGRectMake( 0, 30, 300, 260);
Run Code Online (Sandbox Code Playgroud)
它曾经存储为UITextField,然后作为子视图添加到UIAlertView:
psswdField = [[UITextField alloc] initWithFrame:CGRectMake(32.0, 65.0, 220.0, 25.0)];
psswdField.placeholder = @"Password";
psswdField.secureTextEntry = YES;
psswdField.delegate = self;
psswdField.tag = 1;
[psswdField becomeFirstResponder];
[alert addSubview:psswdField];
[alert show];
[alert release];
Run Code Online (Sandbox Code Playgroud)
这一切都已经注释掉了,而我把它重写为:
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
Run Code Online (Sandbox Code Playgroud)
这是我用来检索值的方式:
[psswdField resignFirstResponder];
[psswdField removeFromSuperview];
activBkgrndView.hidden = NO;
[activInd startAnimating];
[psswdField resignFirstResponder];
[self performSelectorInBackground:@selector(loadData:) withObject:psswdField.text];
Run Code Online (Sandbox Code Playgroud)
现在我对如何从该文本框中获取值发送到loadData感到困惑.
我正在开发一个应用程序,它使用用户位置信息向服务器发送数据.服务器接受基于校验和计算的数据,这是用java编写的.
这是用Java编写的代码:
private static final String CHECKSUM_CONS = "1217278743473774374";
private static String createChecksum(double lat, double lon) {
int latLon = (int) ((lat + lon) * 1E6);
String checkSumStr = CHECKSUM_CONS + latLon;
byte buffer[] = checkSumStr.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
CheckedInputStream cis = new CheckedInputStream(bais, new Adler32());
byte readBuffer[] = new byte[50];
long value = 0;
try {
while (cis.read(readBuffer) >= 0) {
value = cis.getChecksum().getValue();
}
} catch (Exception e) {
LOGGER.log(Level.SEVERE, e.getMessage(), e);
}
return String.valueOf(value);
} …Run Code Online (Sandbox Code Playgroud) 我有一个关于循环浮点值增量的查询.
我有以下代码
float add = 1.02f;
float counter = 0.0f;
for (int i = 0; i < 20; i++) {
counter += add;
NSLog(@"%f",counter);
}
Run Code Online (Sandbox Code Playgroud)
在执行此循环时,我得到以下结果
1.020000
2.040000
3.060000
4.080000
5.100000
6.120000
7.140000
8.160000
9.180000
10.200001
11.220001
12.240002
13.260002
14.280003
15.300003
16.320004
17.340004
18.360004
19.380005
20.400005
Run Code Online (Sandbox Code Playgroud)
这是预期的结果
1.020000
2.040000
3.060000
4.080000
5.100000
6.120000
7.140000
8.160000
9.180000
10.200000
11.220000
12.240000
13.260000
14.280000
15.300000
16.320000
17.340000
18.360000
19.380000
20.400000
Run Code Online (Sandbox Code Playgroud)
为什么我在循环中得到一些浮点而不添加它.
我需要循环超过1000次.我想要float变量中的值.
提前致谢.
早上好,我正在通过目标c在线查看一些旧代码,我无法找到以下内容.
该类是子类UIView,并遵循UIScrollViewDelegate协议.以下是我有一些问题的类方法:
@property(nonatomic, strong) NSDate * _Nonnull date;
- (void)layoutSubviews {
[super layoutSubviews];
if(!self.pagingView) {
UIScrollView *pagingView = [[UIScrollView alloc] initWithFrame:self.bounds];
pagingView.pagingEnabled = YES;
pagingView.directionalLockEnabled = YES;
pagingView.delegate = self;
[pagingView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
[self addSubview:pagingView];
self.pagingView = pagingView;
}
CGRect f = self.pagingView.bounds;
CGSize s = self.pagingView.contentSize;
if(s.width != f.size.width * 3) {
self.date = self.date;
}
}
Run Code Online (Sandbox Code Playgroud)
首先,我不确定这[super layoutSubviews]是什么,我不确定self.date = self.date是做什么的.它只是自己设置?如果是这样,我无法使用swift工作.(我正在尝试将代码转换为)
https://github.com/Daij-Djan/DDCalendarView/blob/master/DDCalendarView_objc/DDCalendarView.m
再次感谢任何帮助;
ios ×12
objective-c ×8
iphone ×3
swift ×3
xcode ×3
adler32 ×1
arm64 ×1
class ×1
core-data ×1
currying ×1
json ×1
properties ×1
storyboard ×1
swift2 ×1
swift2.2 ×1
uitableview ×1
uitouch ×1
xcode7.3 ×1