小编Sta*_*ich的帖子

如何抑制弃用警告"在iOS 6.0中不推荐使用dispatch_get_current_queue()"?

所以问题是主题问题 - 我想摆脱这个非常烦人的警告.

有没有办法让它保持沉默?

注意:我使用dispatch_get_current_queue()仅用于调试目的.

objective-c deprecated ios

10
推荐指数
1
解决办法
3233
查看次数

NSObject的类别可用于每个NSObject子类,即使没有在任何地方导入此类别的.h文件

背景.

请考虑以下步骤:

1)在Xcode中创建一个新的"单视图应用程序".

2)创建一个类别NSObject + Extension.h和.m文件:

// .h
@interface NSObject (Extension)
- (void)someMethod;
@end

// .m
@implementation NSObject (Extension)
- (void)someMethod {
    NSLog(@"someMethod was called");
}
@end
Run Code Online (Sandbox Code Playgroud)

3)确保NSObject+Extension.m文件包含在主目标中.

4)将以下行添加到AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[NSString new] performSelector:@selector(someMethod)];

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

5)确保应用程序中的任何位置都不存在#import "NSObject+Extension.h行!

6)运行应用程序.

输出是

2013-08-27 04:12:53.642 Experimental[32263:c07] someMethod was called
Run Code Online (Sandbox Code Playgroud)

问题

  1. 我想知道在应用程序的任何地方都没有这个类别的#import ,NSString 如何仍然可以使用NSObject + Extension?这种行为让我对我声明的每个Objective-C类别感觉非常糟糕,因为我希望我声明的类别仅在它们声明的范围内可用.例如,我希望NSObject Extension仅在某个类中扩展,但不能在整个应用程序中扩展,因为否则其全局空间会变为"污染".

  2. 有没有办法避免这种行为?我确实希望我的类别仅在我明确导入它们时才能工作,而不是在我将它们链接到我用来运行的目标时.

objective-c ios objective-c-category

9
推荐指数
1
解决办法
1667
查看次数

Xcode 7.3:app delegate无法访问自己的对象,上下文声称捕获了一个Objective-C对象但是self不可用

在MacOS 10.11.3和10.11.4上的xcode 7.3中,当我在任何app委托方法中停止调试器并尝试检查在app委托中实例化的任何对象,甚至是app委托本身时,我在调试器中收到此警告:

 error: warning: Stopped in a context claiming to capture an Objective-C object pointer, but 'self' isn't available; pretending we are in a generic context

 error: member reference type 'AppDelegate *const' is a pointer; did you mean to use '->'?

 error: incomplete definition of type 'AppDelegate'

 note: forward declaration of 'AppDelegate'

 error: 2 errors parsing expression
Run Code Online (Sandbox Code Playgroud)

这个特定的时间我在app委托中application:didFinishLaunchingWithOptions: method,但在app 代理中的任何方法停止,在运行应用程序的任何时候,在尝试查看任何app delegate的对象时都会出现相同的错误.

xcode 7.2不会发生这种情况.我注意到在7.2中self,app委托被列为(AppDelegate*),而在7.3中它是(AppDelegate*const).单击自定义旁边的显示箭头以显示应用程序委托,但在7.3中没有显示任何内容,而在7.2中则显示.

这是在模拟器和实际设备上.

关于什么可能是错的任何想法?

八月

iphone macos xcode ios

9
推荐指数
2
解决办法
2532
查看次数

8
推荐指数
1
解决办法
2557
查看次数

如何在一台服务器上运行多个小型Ruby(Rack)应用程序?

我想在我的VPS服务器上运行几个(> 2个)基于机架的小应用程序,它已经运行了一个大型Rails应用程序.

Rails应用程序使用传统的"Unicorn + nginx"对,它需要我在VPS机器上拥有的大部分RAM资源.

我已经尝试为每个应用程序添加类似的Unicorn配置,这导致我的RAM资源不足.

所以我的问题是:是否可以设置一个小巧的内存节省服务器,允许一次运行所有Sinatra应用程序?

更新:如果重要,我不太关心性能.这些应用程序不打算做任何严肃的工作.

UPDATE2:基于与Nginx共享的套接字的方法优于具有端口的方法.

谢谢!

ruby rack ruby-on-rails

8
推荐指数
1
解决办法
1862
查看次数

在Objective-C中何时/何处使用箭头符号" - >"?

我刚刚清楚地解释了" - >"符号的含义:Dot(".")运算符和箭头(" - >")运算符在C与Objective-C中的使用

但我仍然不明白Objective-C中这种表示法的实际用例是什么?

以下是我所说的例子:https://github.com/gnustep/gnustep-base/blob/master/Source/NSOperation.m - 为什么所有这些字符串如internal-> lock都写在那里 - 为什么不只是使用ivars或dot-notation?


相关主题:object_setClass()的性能,而不是分配isa指针.

objective-c notation

8
推荐指数
1
解决办法
2657
查看次数

#with(object)&block trick

有一个常见的习惯用法,比如:

def with clazz, &block
  yield clazz
  clazz
end

with Hash.new |hash|
  hash.merge!{:a => 1}
end
Run Code Online (Sandbox Code Playgroud)

有没有办法进一步定义#with有可能做到:

with Hash.new |hash|
  merge!{:a => 1} 
end
Run Code Online (Sandbox Code Playgroud)

甚至:

with Hash.new do
  merge!{:a => 1}
end
Run Code Online (Sandbox Code Playgroud)


UPDATE

后来我偶然发现了我正在寻找的东西(类似于公认的解决方案):http: //blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/19153

更新2

https://github.com/kristianmandrup/sugar-high中添加到sugar-high/dsl

更新3

Github上的docille项目很好地利用了这个想法.

ruby idioms

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

@properties(MRC)的显式getter/setter

我在2012年中期开始编写Objective-C语言编程,当时ARC取代MRC作为一般做法,后者几乎不需要学习.

现在,我正在尝试了解MRC的一些基础知识,以加深我对Objective-C中的内存管理的了解.

我现在感兴趣的是如何用手明确地getters/setters声明@properties.

到目前为止,我发现的唯一合理的例子来自Apple的"高级内存管理编程指南":

@interface Counter : NSObject {
    NSNumber *_count;
}
@property (nonatomic, retain) NSNumber *count;
@end;

- (NSNumber *)count {
    return _count;
}

- (void)setCount:(NSNumber *)newCount {
    [newCount retain];

    [_count release];

    _count = newCount;
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,为了(非原子,复制),我应该写类似的东西:

- (NSNumber *)count {
    return _count;
}

- (void)setCount:(NSNumber *)newCount {
    [_count release];

    _count = [newCount copy];
}
Run Code Online (Sandbox Code Playgroud)

所以问题是我不确定的其他组合:

我很感谢能够向我展示如何使用手动引用计数(MRC)为以下@property声明编写显式getter/setter的示例:

1. @property (nonatomic, retain) NSNumber *count;
2. @property (nonatomic, copy) NSNumber *count;
3. @property (atomic, retain) NSNumber *count; …
Run Code Online (Sandbox Code Playgroud)

memory-management objective-c

7
推荐指数
2
解决办法
3276
查看次数

如何从Rust程序的LLVM IR代码中找到测试的函数指针?

我们正在开发基于LLVM突变测试系统.系统支持使用GoogleTest的C++项目,我正在尝试支持Rust.为此,我们需要完成以下步骤:

  1. 将语言编译为LLVM IR.Rust支持这一点.
  2. 在LLVM IR中查找测试.
  3. 运行测试由测试执行的代码("测试者").

挑战是通过LLVM IR API找到单元测试方法.

请考虑以下示例.它有4个测试和一个测试人员功能:

pub fn sum(a: i32, b: i32) -> i32 {
    return a + b;
}

pub fn just_print() {
    println!("I am just_print() function. I just say hello!");
}

#[test]
fn rusttest_foo_sum1() {
    assert!(sum(3, 4) == 7);
}

#[test]
fn rusttest_foo_sum2() {
    assert!(sum(4, 5) == 9);
}

#[test]
fn rusttest_foo_sum3() {
    assert!(sum(5, 6) == 11);
}

#[test]
fn rusttest_foo_sum4() {
    assert!(sum(5, 6) == 11);
}
Run Code Online (Sandbox Code Playgroud)

这是编译此Rust代码时产生 …

llvm rust llvm-ir

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

从底部到顶部移动UIView

如何在代码上从下到上移动视图:

colorView.hidden=NO;
colorView=[[UIView alloc]init];
colorView.frame=CGRectMake(0,480,320, 480);
colorView.bounds=CGRectMake(0,200,320, 280);
colorView.backgroundColor=[UIColor greenColor];
colorView.alpha=1.0f;
[webView addSubview:colorView];
[self.view addSubview:webView];
[self createTransparentView];
Run Code Online (Sandbox Code Playgroud)

那我怎么能在这里添加动画呢?

xcode animation uiview ios uistoryboard

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