小编Cen*_*ion的帖子

是否在同步GCD队列上设置了阻止阻塞和暂停其他队列的阻塞?

我读到应该使用GCD同步队列(dispatch_sync)来实现代码的关键部分.一个例子是从帐户余额中减去交易金额的块.同步调用的有趣部分是一个问题,它如何影响多个线程上其他块的工作?

让我们假设有3个线程在异步模式下使用和执行主队列和自定义队列中的系统和用户定义块的情况.这些块都以某种顺序并行执行.现在,如果将块放在具有同步模式的自定义队列上,这是否意味着所有其他块(包括在其他线程上)都被挂起,直到块成功执行为止?或者这是否意味着只有一些锁定将被放置在该块上,而其他锁定仍将执行.但是,如果其他块使用与同步块相同的数据,那么其他块将不可避免地等到该锁将被释放.

恕我直言无所谓,是一个还是多个核心,同步模式应该冻结整个应用程序的工作.但是,这些只是我的想法所以请评论并分享您的见解:)

iphone queue sync objective-c grand-central-dispatch

4
推荐指数
1
解决办法
2234
查看次数

如何使用netcat将一个字节符号发送到服务器套接字?

已经通过套接字提供了有效的服务器服务,我想通过netcat进行测试.我正在使用Mac OS X Lion.目前,我可以通过端口连接到服务器,发送数据包,但数据包包含错误的值.以下是详细信息:

我需要向服务器发送'm'符号,服务器将返回00000000,一个零字节作为响应.服务器人告诉我,当我发送'm'时服务器收到'A0',当我发送'109'时服务器收到'313039A'.如何定义发送格式或其他东西,我只需要发送'm'(01101101)?

sockets netcat

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

如何创建Oracle全局类型并在PL/SQL中使用它?

在过程或函数中声明的Oracle RECORD TYPE是本地的,因此它可能仅在本地使用.如何声明一个全局的RECORD TYPE,并且可以在DB中全局使用所有过程和函数?

oracle plsql

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

如何检查对象是否具有存储属性?

我需要检查一个对象的类是否有一个可用于赋值的成员.让我们说有一个课程:

class MyClass: NSObject {

  var myVar : AnyObject!

  // ...
}
Run Code Online (Sandbox Code Playgroud)

我试过这个objC样式但是属性在Swift中是一个不同的野兽而第二行总是返回false:

let myClass: MyClass = MyClass()
let hasClassMember = myClass.respondsToSelector(Selector("setMyVar:"))

if hasClassMember {

  myClass.performSelector("setMyVar:", withObject: "Context" as! AnyObject)
} 
Run Code Online (Sandbox Code Playgroud)

我认为Swift没有像ObjC那样强大的反射,但有没有解决方案呢?

更新事实证明我的代码可以工作,但是我已经将它简化为演示目的.奇怪的是,一旦我将myVar的类型更改为某个自定义类的实例,respontsToSelector就会停止工作,比方说ClassB.感觉有点神奇...... :)

UPDATE2最后我发现了问题.我还没有编写完整的代码,认为问题出在其他地方,无论如何,这里是完整的代码.MyClass变量实际上是一个实现AnotherClassProtocol的其他AnotherClass的类型

protocol AnotherClassProtocol {
  //…
}

class AnotherClass: AnotherClassProtocol {
  //…
}

class MyClass: NSObject {

  var myVar : AnotherClass!
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这导致myClass.respondsToSelector(Selector("setMyVar:"))始终返回false.原来问题是因为我在AnotherClass声明中省略了NSObject的扩展.在我修复之后,它开始按预期工作:

class AnotherClass: NSObject, AnotherClassProtocol {
  //…
}
Run Code Online (Sandbox Code Playgroud)

我还在学习Swift并且认为不需要NSObject,因为编译器没有抱怨并且无论如何都从NSObject扩展(至少在ObjC中).好吧,我很高兴我发现了这个讨厌的bug.

reflection ios swift

4
推荐指数
3
解决办法
7851
查看次数

如何为所有导航控制器和视图控制器设置自定义导航栏(标题+ titleView)?

我有一个选项卡式应用程序,其中包含选项卡中的导航控制器和视图控制器.所有这些都使用相同的导航控制器导航栏:后退按钮+徽标图像.目前,我将此代码放在每个视图控制器中:

- (void)viewDidLoad
{
  [super viewDidLoad];
  self.navigationItem.title = @"Back";
  UIImage *headerImage = [UIImage imageNamed:@"Logo.png"];
  self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:headerImage] autorelease];
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,这不是最好的方法.我正在考虑使用UIViewController的类别并覆盖viewDidLoad方法,但是每个视图控制器都有一些额外的代码要在viewDidLoad中执行,所以我猜覆盖不是解决方案.还有什么其他方法?

iphone objective-c uinavigationcontroller uinavigationitem

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

使用loadView创建视图时,视图的帧大小不会随轮换而改变

我有没有xib的UIViewController,我正在使用loadView来构建我创建并添加两个滚动视图的UI.问题是,当旋转发生时,主视图框架大小不会改变.我的意思是,我在loadView中为主视图设置初始帧大小(纵向模式:帧大小宽度= 320,高度= 480).在旋转到横向方向后,视图主框架尺寸不会改变,并且与纵向模式相同.这是我的loadView:

-(void)loadView{

  CGRect screenBounds = [[UIScreen mainScreen] bounds];    
  self.view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height)] autorelease];
  self.view.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
  self.scrollView1 = [[[UIScrollView alloc] init] autorelease];
  self.scrollView1.frame = CGRectMake...
  [self.view addSubview:self.scrollView1];
  self.scrollView2 = [[[UIScrollView alloc] init] autorelease];
  self.scrollView2.frame = CGRectMake...
  [self.view addSubview:self.scrollView2];
Run Code Online (Sandbox Code Playgroud)

我还为视图设置了autoresizingMask以扩展或缩小以适应屏幕.但是在调试控制台时我得到相同的宽度和高度值.我需要获得一个新的大小,因为我需要在旋转发生时重新定位我的两个scrollViews,例如缩小高度并将scrollViews上的宽度扩展到旋转到横向模式.我可以在shouldRotate中手动完成,只是好奇它应该如何以正确的方式完成.

iphone objective-c rotation loadview

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

如何以位为单位显示NSData的内容?

我有NSData,我需要以纯位查看其内容.试过NSLog [NSData description]但它返回NSString.有什么建议?

iphone cocoa-touch objective-c bit nsdata

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

如何将NSData字节转换为NSNumber或NSInteger?

有一种特殊的NSString initWithData方法可以抓取位并将它们转换为字符串.但是,我没有在NSNumber课堂参考中找到.目前,我正在以NSData格式从服务器获取原始数据(字节).我知道如何在C中使用memcpy和使用int指针.但我很好奇直接做的便利方法是什么NSData.无需转换.例如,我正在获取00000010字节,我需要将其转换NSNumber为值2,或者NSInteger.

iphone objective-c nsdata ios

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

如何在FMDatabase中打开外键?

偶然发现,在sqlite中默认禁用外键.我有"on delete casdade"外键并删除父表记录不删除子记录.各种帖子表明您需要在每个连接上启用它"PRAGMA foreign_keys = ON;".那么,在FMDatabase中启用它的位置?我宁愿设置一些设置,而不是在每个SQL stmt之前运行命令.PS.我正在使用FMDatabaseQueue.

sqlite iphone objective-c fmdb

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

Google Plus iOS SDK:如何登录用户电子邮件?

目前正在玩带有范围的GooglePlusSample:

@"https://www.googleapis.com/auth/plus.me", 
@"https://www.googleapis.com/auth/userinfo.email" and 
@"https://www.googleapis.com/auth/userinfo.profile". 
Run Code Online (Sandbox Code Playgroud)

auth.userEmail在回调方法中尝试调用auth.userData finishedWithAuth:error:,但两者都是空的...

objective-c ios google-plus

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