小编Rob*_*Rob的帖子

NSTimer内存管理

当我执行此代码时:

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(showButtons) userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)

我需要将它取消或释放它,不管内存管理是什么?

我正在使用ARC

nstimer ios strong-references

13
推荐指数
1
解决办法
6371
查看次数

使用Objective c在后台调用类方法

在下面的摘录中,

/*A ClassName with instanceMethod and ClassMethod  */

-(void)instanceMethod;

+(void)ClassMethod;

/*To call a instance method in background */

ClassName  class1obj = [ClassName alloc] init];

[class1obj performSelectorInBackground:@selector(instanceMethod) withObject:nil];
Run Code Online (Sandbox Code Playgroud)

同样,如何使用后台调用ClassMethod performSelectorInBackground

如果可能,请解释!请伙计们携手..

iphone objective-c ios performselector

12
推荐指数
1
解决办法
1975
查看次数

如何修复"Autosynthesized属性'myVar'的警告将使用合成的实例变量'_myVar',而不是现有的实例变量'myVar'"?

我声明我的.h文件是这样的:

#import <UIKit/UIKit.h>

@interface NavigationTripViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>{
    NSArray *questionTitleTrip;
    NSArray *questionDescTrip;
    NSMutableArray *answerTrip;
    NSMutableArray *pickerChoices;
    int questionInt;
    int totalInt;
    IBOutlet UILabel *questionNum;
    IBOutlet UILabel *questionTotalNum;
    IBOutlet UILabel *recordType;
    IBOutlet UITextView *questionDes;
    IBOutlet UIView *answerView;
    IBOutlet UIButton *preButton;
    IBOutlet UIButton *nextButton;
    UITextField *text;
    UIPickerView *picker;

}
@property (retain, nonatomic) NSArray *questionTitleTrip;
@property (retain, nonatomic) NSArray *questionDescTrip;
@property (retain, nonatomic) NSMutableArray *answerTrip;
@property (retain, nonatomic) NSMutableArray *pickerChoices;
@property (retain, nonatomic) IBOutlet UILabel *questionNum;
@property (retain, nonatomic) IBOutlet UILabel *questionTotalNum;
@property …
Run Code Online (Sandbox Code Playgroud)

properties objective-c ios

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

以防万一,在去初始化之前发送信号量是否安全?

class SomeViewController: UIViewController {
    let semaphore = DispatchSemaphore(value: 1)

    deinit {
        semaphore.signal() // just in case?
    }

    func someLongAsyncTask() {
        semaphore.wait()
        ...
        semaphore.signal() // called much later
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我告诉信号量等待,然后在信号量被告知发出信号之前取消初始化拥有它的视图控制器,则应用程序会因错误而崩溃Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)。但是,如果我只是调用视图控制器的方法,就可以避免灾难semaphore.signal()deinit但是,如果异步函数在deinit调用之前返回并且视图控制器被取消初始化,则signal()调用两次,这似乎没有问题。但这样做安全和/或明智吗?

grand-central-dispatch swift dispatchsemaphore

12
推荐指数
1
解决办法
1528
查看次数

无法在iOS应用程序中使用dispatch_source_t在GCD块中运行计时器

我想在GCD块中创建一个计时器(每2秒触发一次并调用一个方法)将其用作后台任务.但是,我认为计时器永远不会发火.这是我的代码:

- (void)startMessaging
{
    BOOL queue = YES;
    dispatch_queue_t _queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t timerSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0, _queue);
    dispatch_source_set_timer(timerSource, dispatch_walltime(NULL, 0), 2ull * NSEC_PER_SEC,1ull * NSEC_PER_SEC );
    dispatch_source_set_event_handler(timerSource, ^{
        if (queue) {
            [self observeNewMsgs];
        }
    });
    dispatch_resume(timerSource);
}

- (void)observeNewMsgs
{
    NSLog(@"JUST TO TEST");
    // Staff code...
}
Run Code Online (Sandbox Code Playgroud)

那么这有什么问题呢?我怎样才能解决这个问题?

timer objective-c grand-central-dispatch ios

11
推荐指数
1
解决办法
7364
查看次数

CIGaussianBlur图像大小

嘿想模糊我的观点,我使用这段代码:

//Get a UIImage from the UIView
NSLog(@"blur capture");
UIGraphicsBeginImageContext(BlurContrainerView.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

//Blur the UIImage
CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];
[gaussianBlurFilter setValue:imageToBlur forKey: @"inputImage"];
[gaussianBlurFilter setValue:[NSNumber numberWithFloat: 5] forKey: @"inputRadius"]; //change number to increase/decrease blur
CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"];

//create UIImage from filtered image
blurredImage = [[UIImage alloc] initWithCIImage:resultImage];

//Place the UIImage in a UIImageView
UIImageView *newView = [[UIImageView alloc] initWithFrame:self.view.bounds];
newView.image = blurredImage;

NSLog(@"%f,%f",newView.frame.size.width,newView.frame.size.height);
//insert blur …
Run Code Online (Sandbox Code Playgroud)

objective-c blur core-image ios

11
推荐指数
2
解决办法
6801
查看次数

Swift addObject

所以,我正在学习如何使用JSON从DB获取数据,然后将数据放在某个数组上.citiesArray.addObject(City())当我需要将对象city(id,name,state,...)中的所有数据放入数组时,最后一行会出现问题.我一直在逐行看编译器,基本上一切都很好,除了最后,我的数组仍然是空的(它的值是nil)?

for (var i=0;i<jsonArray.count;i++){
    //Create city objec
    var cID: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("id") as NSString
    var cName: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityName") as NSString
    var cState: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityState") as NSString
    var cPopulation: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("cityPopulation") as NSString
    var cCountry: AnyObject? = jsonArray.objectAtIndex(i).objectForKey("country") as NSString

    //add city obj (i have City class) to city array
    var city = City()

    city.cityID = cID as NSString
    city.cityName = cName as NSString
    city.cityState = cState as NSString
    city.cityPopulation = cPopulation …
Run Code Online (Sandbox Code Playgroud)

arrays json swift

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

(Swift 3)试图在swift 3中按Date排序一个类对象数组?

我有一个对象数组,其中有一个类型的成员,Date我正在尝试对整个数组进行排序Date,并且它没有正确排序.这是我正在使用的代码,数组alarms的名称是,成员类型的名称Datetime.

alarms.sort(by: { $0.time.compare($1.time) == .orderedAscending })
Run Code Online (Sandbox Code Playgroud)

每当我对它进行排序它只是无法正常工作,我正在通过在for循环中打印所有值来测试它.

有人可以帮我解决这个问题吗?

ios swift3

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

`convertFromSnakeCase`策略不适用于Swift中的自定义`CodingKeys`

我尝试使用Swift 4.1的新功能在JSON解码期间将snake-case转换为camelCase.

这是一个例子:

struct StudentInfo: Decodable {
    internal let studentID: String
    internal let name: String
    internal let testScore: String

    private enum CodingKeys: String, CodingKey {
        case studentID = "student_id"
        case name
        case testScore
    }
}

let jsonString = """
{"student_id":"123","name":"Apple Bay Street","test_score":"94608"}
"""

do {
    let decoder = JSONDecoder()
    decoder.keyDecodingStrategy = .convertFromSnakeCase
    let decoded = try decoder.decode(StudentInfo.self, from: Data(jsonString.utf8))
    print(decoded)
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

我需要提供自定义,CodingKeys因为convertFromSnakeCase策略无法推断首字母缩略词或首字母缩写词(例如studentID)的大写字母,但我希望convertFromSnakeCase策略仍然适用testScore.但是,解码器抛出错误("没有与键CodingKeys相关的值"),似乎我不能同时使用convertFromSnakeCase策略和自定义 …

ios swift codable jsondecoder

11
推荐指数
1
解决办法
1838
查看次数

'dispatch_get_main_queue()' 的歧义使用

如何使用DispatchQueue该类为 iOS 替换以下 Swift 代码?这是旧的 Swift 3 代码,最新的 Xcode 不会转换为 Swift 5。

dispatch_async(dispatch_get_main_queue()) { () -> Void in
  // code
}
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,说

'dispatch_get_main_queue()' 的歧义使用

dispatch_get_main_queue()

以下答案似乎是正确答案,我想使用它,但有人可以告诉我这是正确的吗?迅捷版

它说使用以下代码:

DispatchQueue.global(qos: .background).async {

    // Background Thread

    DispatchQueue.main.async {
        // Run UI Updates
    }
}
Run Code Online (Sandbox Code Playgroud)

除了使用之外DispatchQueue,我还有什么其他选择可以解决这个错误?

ambiguous grand-central-dispatch ios swift dispatch-queue

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