ios - Integrating library that manages memory manually with ARC project -


i have library file in ios 4 manual memory management .i want use library function in latest arc project .library giving error .how remover error ?here library function message using in viewcontroller.m

-(void) sandbox{     message(@"sandbox version%@",kbwutilitiesversion); } 

here library file bwdb.h giving error

#import <foundation/foundation.h> #import <sqlite3.h>  #define defaultdatabasefilename @"bwtest.db" #define bwdb_version @"1.0.5"  @interface bwdb : nsobject <nsfastenumeration> {     sqlite3 *database;     sqlite3_stmt *statement;     nsstring *tablename;     nsstring *databasefilename;     nsfilemanager *filemanager;      // "fast enumeration" (iterator/generator pattern)     nsdictionary * enumrows[1]; // enumerated (iterator) object(s) passed in c array                                 // ever pass 1 @ time }  @property (nonatomic, retain) nsstring *tablename;  // object management - (bwdb *) initwithdbfilename: (nsstring *) fn; - (bwdb *) initwithdbfilename: (nsstring *) fn andtablename: (nsstring *) tn; - (void) opendb; - (void) closedb; - (nsstring *) getversion; - (nsstring *) getdbpath;  // sql queries - (nsnumber *) doquery:(nsstring *) query, ...; - (bwdb *) getquery:(nsstring *) query, ...; - (void) preparequery:(nsstring *) query, ...; - (id) valuefromquery:(nsstring *) query, ...;  // crud methods - (nsnumber *) insertrow:(nsdictionary *) record; - (void) updaterow:(nsdictionary *) record: (nsnumber *) rowid; - (void) deleterow:(nsnumber *) rowid; - (nsdictionary *) getrow: (nsnumber *) rowid; - (nsnumber *) countrows;  // raw results - (void) bindsql:(const char *) cquery arguments:(va_list)args; - (nsdictionary *) getpreparedrow; - (id) getpreparedvalue;  // utilities - (id) columnvalue:(int) columnindex; - (nsnumber *) lastinsertid;  @end 

here library file bwdb.m giving error.error lines highlighted

#import "bwdb.h"  @implementation bwdb  @synthesize tablename;  #pragma mark - #pragma mark object management  - (void)dealloc {     // nslog(@"%s", __function__);     [self closedb];     [super dealloc]; }  // if you're not using crud functions, don't need table name - (bwdb *) initwithdbfilename:(nsstring *)fn {     // nslog(@"%s", __function__);     if ((self = [super init])) {         databasefilename = fn;         tablename = nil;         [self opendb];     }     return self; }  - (bwdb *) initwithdbfilename: (nsstring *) fn andtablename: (nsstring *) tn {     // nslog(@"%s", __function__);     if ((self = [super init])) {         databasefilename = fn;         tablename = tn;         [self opendb];     }     return self; }  - (void) opendb {     // nslog(@"%s", __function__);     if (database) return;     filemanager = [[nsfilemanager alloc] init];     nsstring * dbpath = [self getdbpath];      if (![filemanager fileexistsatpath:dbpath]) {         // try copy default, if have         nsstring * defaultdbpath = [[[nsbundle mainbundle] resourcepath] stringbyappendingpathcomponent:databasefilename];         if ([filemanager fileexistsatpath:defaultdbpath]) {             // nslog(@"copy default db");             [filemanager copyitematpath:defaultdbpath topath:dbpath error:null];         }     }     if (sqlite3_open([dbpath utf8string], &database) != sqlite_ok) {         nsassert1(0, @"error: initializedatabase: not open database (%s)", sqlite3_errmsg(database));     }     [filemanager release];     filemanager = nil; }  - (void) closedb {     // nslog(@"%s", __function__);     if (database) sqlite3_close(database);     if (filemanager) [filemanager release];     database = null;     filemanager = nil; }  - (nsstring *) getversion {     return bwdb_version; }  - (nsstring *) getdbpath {     // nslog(@"%s", __function__);     nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);     nsstring *documentsdirectory = [paths objectatindex:0];     return [documentsdirectory stringbyappendingpathcomponent:databasefilename]; }   - (nsuinteger) countbyenumeratingwithstate:(nsfastenumerationstate *)state objects:(id *)stackbuf count:(nsuinteger)len {     if (*enumrows = [self getpreparedrow]) { 
        state->itemsptr = enumrows; 

/*assigning 'nsdictionary *__strong *' 'id _nullable __unsafe_unretained * _nullable' changes retain/release properties of pointer*/

        state->state = 0;   // not used, customarily set 0         state->mutationsptr = (unsigned long *) self;   // not used, required interface         return 1;     } else {         return 0;     } }  #pragma mark - #pragma mark sql queries   - (nsnumber *) doquery:(nsstring *) query, ... {     // nslog(@"%s: %@", __function__, query);     va_list args;     va_start(args, query);      const char *cquery = [query utf8string];     [self bindsql:cquery arguments:args];     if (statement == null) return [nsnumber numberwithint:0];      va_end(args);     sqlite3_step(statement);     if(sqlite3_finalize(statement) == sqlite_ok) {         return [nsnumber numberwithint: sqlite3_changes(database)];     } else {         nslog(@"doquery: sqlite3_finalize failed (%s)", sqlite3_errmsg(database));         return [nsnumber numberwithint:0];     } }   - (void) preparequery:(nsstring *) query, ... {     // nslog(@"%s: %@", __function__, query);     va_list args;     va_start(args, query);      const char *cquery = [query utf8string];     [self bindsql:cquery arguments:args];     if (statement == null) return;     va_end(args); }   - (bwdb *) getquery:(nsstring *) query, ... {     // nslog(@"%s: %@", __function__, query);     va_list args;     va_start(args, query);      const char *cquery = [query utf8string];     [self bindsql:cquery arguments:args];     if (statement == null) return nil;     va_end(args);     return self; }  - (id) valuefromquery:(nsstring *) query, ... {     // nslog(@"%s: %@", __function__, query);     va_list args;     va_start(args, query);     const char *cquery = [query utf8string];     [self bindsql:cquery arguments:args];     if (statement == null) return nil;     va_end(args);     return [self getpreparedvalue]; }    - (void) bindsql:(const char *) cquery arguments:(va_list)args {     // nslog(@"%s: %s", __function__, cquery);     int param_count;      if (sqlite3_prepare_v2(database, cquery, -1, &statement, null) != sqlite_ok) {         nslog(@"bindsql: not prepare statement (%s)", sqlite3_errmsg(database));         statement = null;         return;     }      if ((param_count = sqlite3_bind_parameter_count(statement))) {         (int = 0; < param_count; i++) {             id o = va_arg(args, id);              // determine type of argument             if (o == nil) {                 sqlite3_bind_null(statement, + 1);             } else if ([o respondstoselector:@selector(objctype)]) {                 if (strchr("islislb", *[o objctype])) { // integer                     sqlite3_bind_int(statement, + 1, [o intvalue]);                 } else if (strchr("fd", *[o objctype])) {   // double                     sqlite3_bind_double(statement, + 1, [o doublevalue]);                 } else {    // unhandled types                     nslog(@"bindsql: unhandled objctype: %s", [o objctype]);                     statement = null;                     return;                 }             } else if ([o respondstoselector:@selector(utf8string)]) { // string                 sqlite3_bind_text(statement, + 1, [o utf8string], -1, sqlite_transient);             } else {    // unhhandled type                 nslog(@"bindsql: unhandled parameter type: %@", [o class]);                 statement = null;                 return;             }         }     }      va_end(args);     return; }  #pragma mark - #pragma mark crud methods  - (nsnumber *) insertrow:(nsdictionary *) record {     // nslog(@"%s", __function__);     int dictsize = [record count];      // values array used argument list bindsql     id keys[dictsize];  // not used, side-effect of getobjects:andkeys     id values[dictsize]; 
    [record getobjects:values andkeys:keys]; 

/*sending '__strong id *' parameter of type '__unsafe_unretained id _nonnull * _nullable' changes retain/release properties of pointer*/

// convenient c array

    // construct query     nsmutablearray * placeholdersarray = [nsmutablearray arraywithcapacity:dictsize];     (int = 0; < dictsize; i++)  // array of ? markers placeholders in query         [placeholdersarray addobject: [nsstring stringwithstring:@"?"]];      nsstring * query = [nsstring stringwithformat:@"insert %@ (%@) values (%@)",                         tablename,                         [[record allkeys] componentsjoinedbystring:@","],                         [placeholdersarray componentsjoinedbystring:@","]]; 
    [self bindsql:[query utf8string] arguments:(va_list)values];     sqlite3_step(statement); 

/used type 'va_list' (aka '__builtin_va_list') arithmetic or pointer type required/

    if(sqlite3_finalize(statement) == sqlite_ok) {         return [self lastinsertid];     } else {         nslog(@"doquery: sqlite3_finalize failed (%s)", sqlite3_errmsg(database));         return [nsnumber numberwithint:0];     } }  - (void) updaterow:(nsdictionary *) record:(nsnumber *) rowid {     // nslog(@"%s", __function__);     int dictsize = [record count];      // values array used argument list bindsql     id keys[dictsize];  // not used, side-effect of getobjects:andkeys     id values[dictsize + 1]; 

[record getobjects:values andkeys:keys];

array /*sending '__strong id *' parameter of type '__unsafe_unretained id _nonnull * _nullable' changes retain/release properties of pointer*/

values[dictsize] = rowid;

    nsstring * query = [nsstring stringwithformat:@"update %@ set %@ = ? id = ?",                         tablename,                         [[record allkeys] componentsjoinedbystring:@" = ?, "]]; 
    [self bindsql:[query utf8string] arguments:(va_list)values];  

/*used type 'va_list' (aka '__builtin_va_list') arithmetic or

pointer type required*/

    sqlite3_step(statement);     sqlite3_finalize(statement); }  - (void) deleterow:(nsnumber *) rowid {     // nslog(@"%s", __function__);      nsstring * query = [nsstring stringwithformat:@"delete %@ id = ?", tablename];     [self doquery:query, rowid]; }  - (nsdictionary *) getrow: (nsnumber *) rowid {     nsstring * query = [nsstring stringwithformat:@"select * %@ id = ?", tablename];     [self preparequery:query, rowid];     return [self getpreparedrow]; }  - (nsnumber *) countrows {     return [self valuefromquery:[nsstring stringwithformat:@"select count(*) %@", tablename]]; }  #pragma mark - #pragma mark raw results  - (nsdictionary *) getpreparedrow {     // nslog(@"%s", __function__);     int rc = sqlite3_step(statement);     if (rc == sqlite_done) {         sqlite3_finalize(statement);         return nil;     } else  if (rc == sqlite_row) {         int col_count = sqlite3_column_count(statement);         if (col_count >= 1) {             nsmutabledictionary * drow = [nsmutabledictionary dictionarywithcapacity:1];             for(int = 0; < col_count; i++) {                 // can't use null stringwithutf8string (bw 1.0.5)                 const char * sqlitecolname = sqlite3_column_name(statement, i);                 if(sqlitecolname) {                     nsstring * columnname = [nsstring stringwithutf8string:sqlitecolname];                     id o = [self columnvalue:i];                     if (o != nil) [drow setobject:o forkey:columnname];                     else {                         nslog(@"getpreparedrow: columnvalue returned nil (%s)", sqlite3_errmsg(database));                         return nil;                     }                 } else {                     nslog(@"getpreparedrow: sqlite3_column_name returned null (%s)", sqlite3_errmsg(database));                     return nil;                 }             }             return drow;         }     } else {    // rc != sqlite_row         nslog(@"getpreparedrow: not row: %s", sqlite3_errmsg(database));         return nil;     }     return nil; }  // returns 1 value first column of query - (id) getpreparedvalue {     // nslog(@"%s", __function__);     int rc = sqlite3_step(statement);     if (rc == sqlite_done) {         sqlite3_finalize(statement);         return nil;     } else  if (rc == sqlite_row) {         int col_count = sqlite3_column_count(statement);         if (col_count < 1) return nil;  // shouldn't ever happen         id o = [self columnvalue:0];         sqlite3_finalize(statement);         return o;     } else {    // rc == sqlite_row         nslog(@"valuefrompreparedquery: not row: %s", sqlite3_errmsg(database));         return nil;     } }  #pragma mark - #pragma mark utility methods  - (id) columnvalue:(int) columnindex {     // nslog(@"%s columnindex: %d", __function__, columnindex);     id o = nil;     switch(sqlite3_column_type(statement, columnindex)) {         case sqlite_integer:             o = [nsnumber numberwithint:sqlite3_column_int(statement, columnindex)];             break;         case sqlite_float:             o = [nsnumber numberwithfloat:sqlite3_column_double(statement, columnindex)];             break;         case sqlite_text:             o = [nsstring stringwithutf8string:(const char *) sqlite3_column_text(statement, columnindex)];             break;         case sqlite_blob:             o = [nsdata datawithbytes:sqlite3_column_blob(statement, columnindex) length:sqlite3_column_bytes(statement, columnindex)];             break;         case sqlite_null:             o = [nsnull null];             break;     }     return o; }  - (nsnumber *) lastinsertid {     return [nsnumber numberwithint: sqlite3_last_insert_rowid(database)]; }  @end 

from link can download sample project correction.https://drive.google.com/open?id=0b5pndpbvz8snbutcnm9kxzr1qwm


Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -