1
상속 반환 나는 다음과 같은 기능을 가지고 있지만 정의 된 임시 객체의 메모리를 해제하는 방법을 모른다 : 목표 C의 메모리 관리 문제 : NSObject의 클래스 형
#import <UIKit/UIKit.h>
@interface PatientsSet : NSObject {
NSString *tableid;
NSString *patient_name;
NSString *patient_surname;
NSString *city;
NSString *State;
NSString *phone;
}
@property (nonatomic, retain) NSString *tableid;
@property (nonatomic, retain) NSString *patient_name;
@property (nonatomic, retain) NSString *patient_surname;
@property (nonatomic, retain) NSString *city;
@property (nonatomic, retain) NSString *State;
@property (nonatomic, retain) NSString *phone;
-(id)initWithSet:(NSString *)dd patient_name:(NSString *)dn patient_surname:(NSString *)dsn city:(NSString *)ct state:(NSString *)st phone:(NSString *)ph ;
@end
(나는으로부터 얻고을 SQLite DB 데이터를 NSobject 파생 클래스로 변환) [set release]를 사용하지 않아야합니다. 어딘가에??
-(PatientsSet *)getPatientById:(NSString *)ID {
PatientsSet *set;
// Setup the database object
sqlite3 *database;
// Init the doctors_set Array
doctors_set = [[NSMutableArray alloc] init];
//NSString * databasePath1=[ [self getDocumentsDirectory] stringByAppendingPathComponent:databaseName ];
// Open the database from the users filessytem
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
// Setup the SQL Statement and compile it for faster access
NSString* myString = [NSString stringWithFormat:@"SELECT patients.id,patients.patient_name,patients.patient_surname,patients.phone FROM patients where patients.id = '%@'",ID];
const char *sqlStatement = [myString cString];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
// Read the data from the result row
NSString *aId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *aDurname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
NSString *aPhone = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
// Create a new set object with the data from the database
set=[[PatientsSet alloc] initWithSet:aId patient_name:aName patient_surname:aDurname city:@"" state:@"" phone:aPhone];
}
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
return set;
}
내가해야합니다 설정하면 프로브 = 전무 권리를!? – PartySoft
수 있습니다. 그것은 모두 당신이 모든 일을하기를 원하는 방식에 달려 있습니다. 내 생각 엔 네일이 없다면 빈'PatientSet'을 반환하기를 원할 것입니다. 다음과 같이 할 수 있습니다 :'[autorelease]; return set! = nil? set : [[[PatientSet alloc] init] autorelease];'. – FreeAsInBeer