Colección de citas famosas - Slogan de motivación - ¿Puedo usar self para métodos de configuración y carga diferida en iOS? En programación, a menudo usamos carga diferida. Como sugiere el nombre, al usarlo, abriremos espacio al implementar métodos de fuente de datos, como UITableView, el control más utilizado en el desarrollo de iOS. Por lo general, escribimos vista de tabla objetivo-c-(nsinteger): (uitableview *)vista de tabla número de inserción de fila: (nsinteger)sección { return self. dataarray.count}-(uitableviewcell *)vista de tabla: (uitableview *)celda de vista de tabla para rowatindexpath: (nsindexpath *)ruta de índice {//1. obtener celda xwshopcell * cell = [xwshopcell con vista de tabla]; // 2. Transferir celda de modelo = self matriz de datos [fila de índice] // 3. Devolver celda de retorno } en el. código, se devuelve self .data array. de hecho, las propiedades de @ propiedad (no atómica, fuerte) nsarray * dataarray@property se utilizan para generar métodos get y set para propiedades. pero en el código anterior, return self.dataArray.count llamará -(nsarray *)dataarray { return _ dataarray }. Si al atributo miembro dataArray no se le asigna un valor al principio, al usarlo, se generará un error y un puntero nulo si no se reescribe, por lo que generalmente anularemos el método get // Reescribiremos el método get - ( nsarray *) dataArray { if( nil = = _dataArray){ _dataArray =[nsarray];} return _dataArray} Este tipo de escritura evitará que se asignen valores a las propiedades de los miembros. En resumen, la carga diferida de Objective-C en realidad llama al método get del atributo miembro para inicializar el valor, mientras que la carga diferida de Swift es el método proxy dataSource de la vista de tabla de la función Swift // MARK tabview (vista de tabla: UITableView, sección numberofroweinsertion: Int) es diferente de Objective-C -> Int { return self . data array . count } vista de tabla funcional (vista de tabla: UITableView, cellforrowatdinexpath indexPath: NSIndexPath) - gt; Obtener celllet cell = xwshopcell. cellwithtableview(vista de tabla)//2. Transferir celdas del modelo. Vino = ego. matriz de datos[rutaíndice. fila]//3. Return cell return cell} y la propiedad return self.dataArray.count almacenada en Swift deben inicializarse, se debe confirmar el tipo y también se pueden usar tipos opcionales.
¿Puedo usar self para métodos de configuración y carga diferida en iOS? En programación, a menudo usamos carga diferida. Como sugiere el nombre, al usarlo, abriremos espacio al implementar métodos de fuente de datos, como UITableView, el control más utilizado en el desarrollo de iOS. Por lo general, escribimos vista de tabla objetivo-c-(nsinteger): (uitableview *)vista de tabla número de inserción de fila: (nsinteger)sección { return self. dataarray.count}-(uitableviewcell *)vista de tabla: (uitableview *)celda de vista de tabla para rowatindexpath: (nsindexpath *)ruta de índice {//1. obtener celda xwshopcell * cell = [xwshopcell con vista de tabla]; // 2. Transferir celda de modelo = self matriz de datos [fila de índice] // 3. Devolver celda de retorno } en el. código, se devuelve self .data array. de hecho, las propiedades de @ propiedad (no atómica, fuerte) nsarray * dataarray@property se utilizan para generar métodos get y set para propiedades. pero en el código anterior, return self.dataArray.count llamará -(nsarray *)dataarray { return _ dataarray }. Si al atributo miembro dataArray no se le asigna un valor al principio, al usarlo, se generará un error y un puntero nulo si no se reescribe, por lo que generalmente anularemos el método get // Reescribiremos el método get - ( nsarray *) dataArray { if( nil = = _dataArray){ _dataArray =[nsarray];} return _dataArray} Este tipo de escritura evitará que se asignen valores a las propiedades de los miembros. En resumen, la carga diferida de Objective-C en realidad llama al método get del atributo miembro para inicializar el valor, mientras que la carga diferida de Swift es el método proxy dataSource de la vista de tabla de la función Swift // MARK tabview (vista de tabla: UITableView, sección numberofroweinsertion: Int) es diferente de Objective-C -> Int { return self . data array . count } vista de tabla funcional (vista de tabla: UITableView, cellforrowatdinexpath indexPath: NSIndexPath) - gt; Obtener celllet cell = xwshopcell. cellwithtableview(vista de tabla)//2. Transferir celdas del modelo. Vino = ego. matriz de datos[rutaíndice. fila]//3. Return cell return cell} y la propiedad return self.dataArray.count almacenada en Swift deben inicializarse, se debe confirmar el tipo y también se pueden usar tipos opcionales.
En resumen, debe confirmar el tipo. Después de todo, Swift es un lenguaje de tipo seguro, por lo que Swift propone el atributo diferido, uso //1. Analizar NSArray es el valor de retorno de un cierre. Y esta es una matriz de datos var diferida de cierre sin parámetros: ns array = {[]}()/2. También se puede escribir como matriz de datos var diferida: nsarray = { return nsarray()}()/3. Cargar matriz de datos LazyVar: matriz